js正则表达式小结
虽然一直在使用正则表达式,但是一直没有系统的归纳。以下从正则表达是的功能进行相应的介绍。如有不正确的地方,望请纠正。
- 模式检测功能
模式检测是指要检测的文本是否符合我们预期的模式,主要用于做登录、注册的验证等:如,我们经常在注册时要求账号长度为6-16位等,以下是常用正则表达式
- 手机号码:/[1-9][0-9]{10}/
- 邮箱:/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/
- 身份证:/([\d]{17}[\d|x])|[\d]{15}/ 注:旧的身份证为15位
- 账号检测:/[a-zA-Z][a-zA-Z0-9_]{5,17}$/ (只允许字母开头并且长度为6-18位的账号)
2. 文本内容的部分替换
- 将文本替换中的内容全部用其他的内容替换,例如:
1 var str="Our life is bright,we should cherish our life"; 2 var pattern=/life/g; 3 var result=str.replace(pattern,"future"); 4 console.log(result);
- 可以将文本的格式替换为预期的另一种格式。如将段落中的所有单词的首字母大写
1 var str="Our life is bright,we should cherish our life"; 2 var pattern=/\b\w+\b/g; 3 var result=str.replace(pattern,function(word){ 4 return word.substring(0,1).toUpperCase()+word.substring(1); 5 }); 6 7 console.log(result);//Our Life Is Bright,We Should Cherish Our Life
3. 获得模式匹配的文本
- 使用String的match方法获得匹配的结果
1 var str="Our life is bright,we should cherish our life"; 2 var pattern=/li\w*/g; 3 var result=str.match(pattern); 4 console.log(result);//["life", "life"]
- 使用RegExp的exec方法获得匹配的结果
1 var str="Our life is bright,we should cherish our life"; 2 var pattern=/li\w*/g; 3 var result=pattern.exec(str); 4 console.log(result);//["life", index: 4, input: "Our life is bright,we should cherish our life"]