JavaScript 正则表达式 指定匹配的位置

在正则表达式中有一些特殊的序列匹配的不是实际的字符,而是字符串中某些特殊的字符位置。下面我将继续用表格的方式列出这些指定匹配的位置的字符,并逐一进行举例描述。

正则表达式的锚字符:

字符 含义
^ 匹配字符串的开头,在多行检索中,匹配一行的开头
$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾
\b 匹配一个词语的边界。简而言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头或结尾之间的位置(注意:[\b]匹配的是退格符)
\B 匹配非词语边界的字符
(?=p) 正前向声明,要求接下来的字符都与模式p匹配,但是不包括匹配中的那些字符
(?!p) 反前向声明,要求接下来的字符不能与模式p匹配

举例描述:

1. ^ 匹配字符串的开头
这个应该很好理解,就好比说我要得到匹配”simaopig”的字符串,并且这个字符串得在前面,这里”simaopig”相当于我指定的规则我们可以用如下代码进行检查

var patt1=new RegExp("^simaopig");
// 与匹配规则相符,要求被匹配的内容在字符串的开始处,所以这里输入true
document.write(patt1.test("simaopig是小小子的昵称"));
document.write("\n");
// 与匹配规则不符,在字符串的开始处不是"simaopig",所以这里输出false
document.write(patt1.test("小小子的昵称是:simaopig"));

2. $ 匹配字符串的结尾,这与前面的^相似,跳过不谈

3. \b 匹配的是一个词语的边界

这个也应该挺好理解的,就比如说,我要匹配的东西必须是个独立的个体,例如我要匹配”simaopig”,但是”a simaopig”会匹配,因为这里的“simaopig”是一个独立的个体,独立的单词,而”simaopiga”就不是独立的,其作为其它字符串的一 部分

var patt1=new RegExp("\\bsimaopig\\b");
// var patt1 = /\bsimaopig\b/;
// simaopig是独立的单词,所以其输出true
document.write(patt1.test("simaopig"));
document.write("\n");
// simaopig不是独立的单词,所以其输出false
document.write(patt1.test("asimaopig "));

4. \B 匹配的是一个词语不是边界的位置,可以理解为与\b 相反,不多解释

5. ?= 与 ?!你可以理解为这样的操作:第一种,你需要里面有一个规则,比如说你是城管,你想要小贩卖的东西里面必须有黄瓜,可是其实你是不需要黄瓜的,但是你要求其必须得卖黄瓜,因为这是上面“龟”定的