先介绍枯燥的规则,底部有常用的一些例子。
正则表达式据说是一个描述字符模式的对象。
avaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法。
说了一大堆废话,关键还不是经常使用它们,正则表达式的规则。
var pattern = /s$/; 就是一对斜杠之间的字符。
具体的语法(只介绍我用到或者想到的一些语法,不代表所有,一些比较特殊的我用例子说明):
^匹配一行或者输入的开头,例:^a奖匹配"an A",而不匹配"An a" 。
$ 匹配一个输入或一行的结尾,例:a$匹配"An a",而不匹配"an A" 。
* 匹配前面元字符0次或多次,例:ba*将匹配b,ba,baa,baaa 。
+ 匹配前面元字符1次或多次,例:ba+将匹配ba,baa,baaa 。
? 匹配前面元字符0次或1次,例:ba?将匹配b,ba
x|y 匹配x或y
{n} 精确匹配n次
{n,m} 匹配n-m次 ,例:"ab{3,5}":奖匹配一个字符串有一个a跟着3到5个b。
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)。
[^xyz] 不匹配这个集合中的任何一个字符。
“”定义为特殊转义字符。
d 匹配一个字数字符,/d/ 也可以写成/[0-9]/ 。
D 匹配一个非字数字符,/D/= /[^0-9]/。
匹配一个换行符 。
匹配一个回车符 。
W 匹配一个不可以组成单词的字符,例:[W]匹配"$5.98"中的$,等价于[^a-zA-Z0-9]
一些常用的正则表达式例子:
手机号验证:
/^1(3|4|5|7|8)d{9}$/.test('X1882776248')
身份证验证
/^(d{6})(d{4})(d{2})(d{2})(d{3})([0-9]|X)$/.test('X2280219940420311X')
邮箱验证
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test('1xxxxx@qq.com')
固定电话验证(区号0开头)
/^0d{2,3}-?d{7,8}$/.test('0234-45678912')
车牌验证(不包括新能源汽车和共享汽车)
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/.test('川A01011警')