正则表达式一般用于字符串的验证
长度、中英文、特殊字符、数字、特殊格式。
转义字符:在计算机语言中有一些包含特殊含义的字符不能够直接使用的;在字符前添加\,对应的字符便切换为原来的含义
通过转义字符来实现某些特殊的功能:
\n:换行
\n:按位对齐,相当于键盘'TAB'键
正则语法:
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
基本验证:
[0-9] : 匹配任意数字
[a-z] : 匹配a-z任意小写字母
[A-Z] : 匹配A-Z任意大写字母
[0-9]* : 任意数字出现0次或多次
[a-z]+ : 匹配a-z任意小写字母至少出现一次
[A-Z].[a-z] : 匹配大写字母和小写字母,中间必须由字符进行间隔
\(.*\) : 匹配小括号及括号中的所有内容
[0-9]{n} : 匹配数字出现n次
[0-9]{m,n} : 匹配数字出现最少m次最多n次
[0-9]{n,} : 匹配数字至少出现n次
电话号码验证:
((13)|(15)|(17)|(18)|(19))[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
((13)|(15)|(17)|(18)|(19))[0-9]{9}
正式的格式 : /^((13)|(15)|(17)|(18)|(19))[0-9]{9}$/
名字验证:
中文验证:所有的字符在码表中都有序号
unicode编码表 : 中文的序号为4e00到9fa5
4e00转换为10进制 : 4*16*16*16 + 14*16*16 + 0*16 + 0*1
\u4e00-\u9fa5
[\u4e00-\u9fa5]{2,4}
扩展验证:
[0-9a-z] : 匹配一个字符是数字或小写字母
[135] : 匹配一个字符是1或3或5
[^135] :匹配一个字符不是135
[0-9] : 匹配数字 等价于 \d
\w
匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
\W
匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
电子邮箱的验证:
514562029@qq.com
chengd.....u$jntangxin@xxxx.cn
(.+)@[0-9a-zA-Z]+\.((com)|(cn))
时间的验证:
13:47:34
小时 :(1[0-9])|(2[0-3])|([0-9])
分钟 :(([1-5])|0?)[0-9]
秒:(([1-5])|0?)[0-9]
((1[0-9])|(2[0-3])|(0?[0-9])):((([1-5])|0?)[0-9]):((([1-5])|0?)[0-9])
日期的验证:
2019-3-19
((19)|(20))? :年份的头两个数字可能有(要么是19要么是20),可能没有
年份:((19)|(20))?\d{2}
月 : (0?[13578])|10|12 : 31天的月份
(0?[469])|11 :30天的月份
(0?2) :28,29天的月份
(10|12|(0?[13578]))|(11|(0?[469]))|(0?2)
天:
([12][0-9])|(3[0-1])|(0?[1-9]) 31天
([12][0-9])|(30)|(0?[1-9]) 30天
(1[0-9])|(2[0-9])|(0?[1-9]) 29,28天
(10|12|(0?[13578]))-(([12][0-9])|(3[0-1])|(0?[1-9]))
拼接
(((19)|(20))?\d{2})-(((10|12|(0?[13578]))-(([12][0-9])|(3[0-1])|(0?[1-9])))|((11|(0?[469]))-(([12][0-9])|(30)|(0?[1-9])))|((0?2)-((1[0-9])|(2[0-9])|(0?[1-9]))))