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,}$/