js正则表达式中的问号使⽤技巧总结
这篇⽂章主要介绍了js正则表达式中的问号⼏种⽤法,⽐如+?,*?,{2,3}?可以停⽌匹配的贪婪模式等例⼦的解析。
在表⽰重复的字符后⾯加问号,⽐如+?,*?,{2,3}?可以停⽌匹配的贪婪模式。
var pattern=/\w{2,3}/;
console.log("aaaa".match(pattern)[0]);
/*结果"aaa";贪婪模式下会尽可能多的匹配,所以会匹配3个重复的字符 */
var pattern2=/\w{2,3}?/;
js 正则替换console.log("aaaa".match(pattern2)[0]);
/* *结果"aa";加问号后会尽可能少的匹配重复次数, *所以匹配到了2个重复的字符 */
在分组内使⽤?:可以产⽣没有编号的分组,⽐如
var pattern=/(ab)\w+(ba)/;
console.log("abcba_".replace(pattern,"$1"));
/*结果"ab_";匹配到的字符被第⼀个分组(ab) *替换 */
var pattern2=/(?:ab)\w+(ba)/;
console.log("abcba_".replace(pattern2,"$1"));
/* *结果"ba_";第⼀次分组内加⼊了?:,产⽣的是⼀个 *没有编号的分组,所以$1匹配的字符是第⼆个分组, *也就是第⼀个编号分组(ba)相匹配的⽂本内容 */
(?=)和(?!);零宽正向断⾔和负向断⾔,括号内表⽰某个位置右边必须和=右边匹配上,或者不和!后的字符匹配。
var pattern=/str(?=ings)ing/;
console.log("strings.a".match(pattern));
console.log("strings.a".match(/string(?=s)/));
console.log("string_x".match(pattern));
console.log("string_x".match(/string(?=s)/));
/*前两个结果是["string"],后两个结果是null; *str(?=ings)ing/匹配"string",r后⾯的位置右边必须跟 *上ings;和/string(?=s)/⼀样;匹配"string";g后⾯的位置 *的右边必须跟⼀个s。"string_x"虽然也含有"string"但是 *不满⾜(?=...)括号内的条件 */ var pattern=/string(?!s)/;
console.log("strings".match(pattern));//null
console.log("string.".match(pattern));//["string"]
/*(?!...)某位置右边不能有!后匹配的字符, *string(?!s)/匹配"string","g"后不能跟"s" */
在表⽰重复次数时,代表重复0次或1次.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论