例子详解正则表达式(三)

例子详解正则表达式(三)_第1张图片
image.png
前言

接着例子详解正则表达式(二)>往下讲。
1.特殊字符:x(?=y)

例子详解正则表达式(三)_第2张图片

上面说明已经很明白,()里面就是一个控制流语句,x(?=y)相当于:if(y){ x }

var str = "issax is not issac";
var pattern = /(?:issa)(?=x)/g;
console.log(str.replace(pattern, 'a'));
// 输出ax is  not issac

上面的 pattern 中第一个()中的正则语法在 例子详解正则表达式(一) 有详细说过,它是一个“非捕获符号”,结合结果你可以猜到,它的就用将“issa”捆绑成一块,作为一个整体去匹配。
第二个()是本小节主角,按本小节的pattern解读就是:只有扫描到“issa”时,只有它后面紧接的是“x”才匹配。也是因此“issac”没有被匹配。

传送门:demo

2.特殊字符:x(?!y)

例子详解正则表达式(三)_第3张图片

会了第1小节中的正则语法,这一小节就好明白啦,就是来个否定而已,就直接上个例子了。

var str = "issax is not issac";
var pattern = /(?:issa)(?!x)/g;
console.log(str.replace(pattern, 'a'));
// 输出

传送门:demo

3.特殊字符:x|y

例子详解正则表达式(三)_第4张图片

这个符号的作用也是上面说的起到一个或的作用,相当于控制流中的||,类比if(x || y){ }

var str = "issaxite is issacsite";
var pattern = /x|cs/g
console.log(str.replace(pattern, "c's"));

ps: ·|·是可以多次使用的。另外,由上面的例子结果可以看出,这个符号的作用是:以多个正则表达式去匹配。

传送门:demo

4.特殊字符:{n}

例子详解正则表达式(三)_第5张图片

n是一个正整数,正整数是1,2,3,...,n(不包括负数)
可以n指定前面的字符出现的次,还是比较简单,比较好理解的

var str = "nnnn and nnnnnn  nnnnnnn is just n";
var pattern = /n{6}/g;
console.log(str.replace(pattern, 'n'));

很简单的解读:/n{6}/g就相当于/nnnnnn/g

传送门:demo

5.特殊字符:{n, m}

例子详解正则表达式(三)_第6张图片

这个字符和第5小节中的字符的功能用点类似,但是本节的字符的作用不是指定某字符或单位字串出现的次数,而是指定某字符或某单位字串出现次数的范围,例如/n{2,3}/g,即是匹配nn或nnn但是不匹配n或nnn...n

var str = "n nn nnn nnnn nnnnn nnnnnn nnnnnnn"; // 分别是1,2,3,4,5,6,7个n
var pattern = /n{2,3}/g
console.log(str.replace(pattern, "N"));

n的出现次数在范围内还好理解,但是超出了又怎么对待的?估计会有这个疑问,例子的输出结果好像已经解答了这个问题。

  • 各位观众老爷,今天就到这里,且听下回分解。
    ps: 网络不好,demo是回公司再补了

你可能感兴趣的:(例子详解正则表达式(三))