JavaScript之正则
# JavaScript正则
# 目录
# 构造正则表达式
1、使用new创建对象
new RegExp(pattern,modifiers)
2、pattern模式
/pattern/modifiers
pattern(模式) 描述了表达式的模式
modifiers(修饰符) 用于指定全局匹配(g)、区分大小写的匹配(i)和多行匹配(m)
# 正则查找模式
1、方括号:用于查找某个范围内的字符
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。
2、元字符:拥有特殊含义的字符
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符。
\W 查找非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NUL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
3、量词
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。
4、RegExp 对象方法
compile 编译正则表达式。
exec 检索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。
5、支持正则表达式的 String 对象的方法
search 检索与正则表达式相匹配的值。
match 找到一个或多个正则表达式的匹配。
replace 替换与正则表达式匹配的子串。
split 把字符串分割为字符串数组。
# 常用的正则式
1、验证姓名
2到9位中文昵称
^[\u4e00-\u9fa5]{2,9}$
2、验证密码
只能是字母、数字和下划线,长度不限制:
^\w+$
允许小写字母a-z、大写字母A-Z、数字0-9、下划线_、 连接符-,且长度在6-18位数:
/^[a-zA-Z0-9_-]{6,18}$/
必须包含数字+小写字母+大写字母的密码,且长度在8-10位之间:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
3、验证 Email
允许有一个字符符合[A-Za-z0-9_]之后可以为[A-Za-z0-9_-+.] + @ + 允许有一个字符符合 [A-Za-z0-9_] 之后可以为 [A-Za-z0-9_-.] + . + 允许有一个字符符合 [A-Za-z0-9_] 之后可以有 [A-Za-z0-9_-.] 的邮箱:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
4、验证身份证
18位身份证号,尾数是数字或者字母X:
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
15或者18位身份证号,尾数可以是数字及X或者x:
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
5、验证手机号
以 1 开头,第二位数是 3/4/5/7/8 的 11 位手机号码:
^1[3,4,5,7,8,9]\d{9}$
移动号码:
^134[0-8]\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\d{7,8}$
电信号码:
^(?:133|153|1700|1701|1702|177|173|18[019])\d{7,8}$
联通号码: ^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])<d>7,8
# 常见的坑
在[A-Z]与[a-z]中存在其他字符,[A-z]的准确表述为
[A-Z][a-z]
编辑 (opens new window)
上次更新: 2021/07/19, 02:17:53