2020-11-09 | 前端入门 | UNLOCK | 更新时间:2020-11-9 15:43

正则表达式的入门教学

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+ //匹配的字符串至少包含一个n
n* //匹配的字符串可以有零个或多个n
n? //匹配的字符串可以有零个或多个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,}$/