RegExp对象
使用正则匹配需要正则表达式,就是RegExp对象
语法:/主体/修饰符(可选)
let reg = new RegExp("abc")
等同于
let reg = /abc/
匹配方法
当有了匹配公式后,还需要使用JavaScript的匹配方法进行字符串的匹配。
// 查询匹配公式的字符串位置
/a/.exec('abc') // ["a", index: 0, input: "abc", groups: undefined]
// 查询字符串是否匹配正则公式
/a/.test('abc') // true
// 获取匹配公式的第一个字符串索引
'abc'.search(/a/) // 1
// 查询字符串中有多少匹配的字符串
'abc'.match(/a/).length // 1
// 匹配字符串后替换成指定字符串
'abc'.replace(/b/,'a') // 'aac'
修饰符
i:忽略大小写 g:全局匹配 m:执行多行匹配 s:特殊字符圆点 . 中包含换行符 \n
'abccba'.match(/a/g) // [a,a]
公式规则
元字符
\d
查找数字\D
查找非数字\s
查找空格\S
查找非空格\w
查找单词\W
查找非单词\n
匹配换行符\r
匹配回车符
\b
匹配单词的边\B
匹配单词的里
"Hello number beact".match(/\bbe/) /*查找在单词边上的be*/
"Hello number beact".match(/\Bbe/) /*查找不在边上的be*/
^x
匹配开头是x的字符串x$
匹配结尾是x的字符串
字符镞
[a-z]
//匹配所有的小写字母[A-Z]
//匹配所有的大写字母[a-zA-Z]
//匹配所有的字母[0-9]
//匹配所有的数字[0-9\.\-]
//匹配所有的数字,句号和减号[ \f\r\t\n]
//匹配所有的空白字符[abcd]
//匹配集合内的任意字符[^abcd]
//匹配集合外的任意字符
量词
n+
//匹配的字符串至少包含一个nn*
//匹配的字符串可以有零个或多个nn?
//匹配的字符串可以有零个或多个n
当此字符紧随任何其他限定符之后时,匹配模式是”非贪心的”,”o+?”只匹配单个”o”,而”o+”匹配所有”o”
"AASDASD".match(/A+/g) /*["AA", "A"] */
"AASDASD".match(/A+?/g)/*["A", "A", "A"]*/
"AASDASD".match(/A*/g) /*["AA", "", "", "A", "", "", ""]*/
x{n}
n是非负整数。正好匹配 n 次x{n,}
n是非负整数。至少匹配 n 次x{n,m}
n和m是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次
实例
密码校验
最少一个大写字母
最少一个小写字母
最少一个特殊字符
最少一个数字
长度8位以上
/^(?=.[A-Z])(?=.[a-z])(?=.\d)(?=.[!@#$%^&*,.~`<>-+=/\()]).{8,}$/