一、量词符与括号字符
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} | 限定符 |
^、$、\任何元字符、任何字符 | 定位点和序列 |
| | “或”操作 |
标签:字符,匹配,正则表达式,捕获,var,reg 来源: https://blog.csdn.net/qq_48315043/article/details/122127943
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。