正则表达式(二)

一、量词符与括号字符

1、量词符    

量词符:用来设定某个模式出现的次数。

字符

说明

示例

结果

?

匹配?前面的字符零次或一次

hi?t

可匹配ht和hit

+

匹配+前面的字符一次或多次

bre+ad

可匹配范围从bread到bre…ad

*

匹配*前面的字符零次或多次

ro*se

可匹配范围从rse到ro…se

{n}

匹配{}前面的字符n次

hit{2}er

只能匹配hitter

{n,}

匹配{}前面的字符最少n次

hit{2,}er

可匹配范围从hitter到hitt…er

2、括号字符

改变限定符的范围:允许用户输入6~16位的用户名

使用()符号前

① 改变作用范围前
正则表达式:catch|er
可匹配的结果:catch、er

使用()符号后

② 改变作用范围后
正则表达式:cat(ch|er)
可匹配的结果:catch、cater

分组:使用小括号可以进行分组,当小括号后面有量词符时,就表示对整个组进行操作。

使用()分组前

① 分组前
正则表达式:abc{2}
可匹配的结果:abcc

使用()分组后

② 分组后
正则表达式: a(bc){2}
可匹配的结果:abcbc

2、捕获与非捕获        

捕获:使用小括号可以进行分组,当小括号后面有量词符时,就表示对整个组进行操作。  

捕获与非捕获: (?:x)方式实现非捕获。

非捕获:

// ① 非捕获
var reg = /(?:J)(?:S)/;
var res = 'JS'.replace(reg,'$2 $1');
console.log(res); // 输出结果:$2 $1

捕获:

// ② 捕获
var reg = /(J)(S)/;
var res = 'JS'.replace(reg,'$2 $1');
console.log(res); // 输出结果:S J

3、贪婪与懒惰匹配          

贪婪与懒惰匹配:所谓贪婪表示匹配尽可能多的字符,而惰性表示匹配尽可能少的字符。

懒惰匹配:正则匹配默认是贪婪匹配,通过 “?”符号实现惰性匹配。

var str = 'webWEBWebwEb';
var reg1 = /w.*b/gi;    // 贪婪匹配
var reg2 = /w.*?b/gi;   // 懒惰匹配
// 输出结果为:["webWEBWebwEb", index: 0, input: "webWEBWebwEb"]
console.log(reg1.exec(str)); 
// 输出结果为:["web", index: 0, input: "webWEBWebwEb"]
console.log(reg2.exec(str)); 

4、反向引用

反向引用:获取存放在缓存区内的子表达式的捕获内容。

var str = '13335 12345 56668';
var reg = /(\d)\1\1/gi;
var match = str.match(reg);
console.log(match); // 输出结果为:(2) ["333", "666"]

5、零宽断言 

零宽断言:用于查找子表达式匹配的内容之前或之后是否含有特定字符集。

方式:正向预查和反向预查。

6、正则表达式优先级

正则表达式优先级:正则表达式各种符号的优先级,由高到低排列。

符号

说明

\

转义符

()、(?:)、(?=)、[]

圆括号和中括号

*、+、?、{n}、{n,}、{n,m}

限定符

^、$、\任何元字符、任何字符

定位点和序列

|

“或”操作

上一篇:机器学习(五)——模型泛化


下一篇:uni-app input标签密码输入框纯数字验证