许多程序设计语言都支持正则表达式进行字符串操作
一、验证方法
- RegExp (正则表达式)对象方法
- test() 方法用于检测一个字符串是否匹配某个模式,返回值为 true / false
var tel = "15189469911";//字符串
var reg = new RegExp(/1[3578][0-9]{9}/); //模式
console.log(reg.test(tel));//true
- 支持正则表达式的 String 对象的方法
- match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
返回存放匹配结果的数组 / null
var tel = "13789469911";
console.log(tel.match(/^1[34578][0-9]{9}$/));
//Array [ "13789469911" ]
二、正则表达式
- 元字符
拥有特殊含义的字符
"\" 转义字符
"\n" 匹配换行符
"\\"(串行) 匹配 "\"
"\(" 匹配"("
\w 匹配单词字符。
\W 匹配非单词字符。
\d 匹配数字。[0-9]
\D 匹配非数字字符。[^0-9]
\s 匹配空白字符。
\S 匹配非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\n 匹配换行符。
\f 匹配换页符。
\r 匹配回车符。
\t 匹配制表符。
\v 匹配垂直制表符。
- ^
匹配输入字符串的开始位置 - $
匹配输入字符串的结束位置 *
匹配前面的子表达式零次或多次
var str="fooood";//f fo...
//注意字符串两种写法结果的不同
console.log(str.match(/fo*/));//Array [ "foooo" ]
console.log(str.match(/^fo*$/));//null
+
匹配前面的子表达式一次或多次
var str="foo";//fo foo fooo...
console.log(str.match(/^fo+$/));
console.log(str.match(/fo+/));
//也可以不写开始结尾符
- ?
匹配前面的子表达式零次或一次({0,1})
var str="foo";//f fo
console.log(str.match(/^fo?$/));
{n} 非负整数,匹配确定的n次
{n,} 非负整数,至少匹配n次
{n,m} 皆为非负整数,最少匹配n次最多匹配m次
[abc] 字符集合。匹配所包含的任意一个字符
[^abc] 匹配任何不在方括号之间的字符。
[0-9] 匹配任何从 0 至 9 的数字。
[a-z] 匹配任何从小写 a 到小写 z 的字符。
[A-Z] 匹配任何从大写 A 到大写 Z 的字符。
[A-z] 匹配任何从大写 A 到小写 z 的字符。都可写[^A-z],匹配任何其中不包含的字符。
x|y 匹配x或y。
三、常用正则表达式
- 身份证
var str="61052319890917238X";//假设
var sfz=/^[0-9]\d{5}(19|20)\d{2}((0\d)|(1[0-2]))(([0-2]\d)|(3[0-1]))\d{3}(\d|X)$/;
console.log(str.match(sfz));
- 用户名
var userId = /^[a-z0-9_-]{3,16}$/;
- 密码
var password = /^[a-z0-9_-]{6,18}$/;
- 电子邮箱
var email = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
var email = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;