在正则表达式中有一些特殊的序列匹配的不是实际的字符,而是字符串中某些特殊的字符位置。下面我将继续用表格的方式列出这些指定匹配的位置的字符,并逐一进行举例描述。
正则表达式的锚字符:
| 字符 | 含义 |
|---|---|
| ^ | 匹配字符串的开头,在多行检索中,匹配一行的开头 |
| $ | 匹配字符串的结尾,在多行检索中,匹配一行的结尾 |
| \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. ?= 与 ?!你可以理解为这样的操作:第一种,你需要里面有一个规则,比如说你是城管,你想要小贩卖的东西里面必须有黄瓜,可是其实你是不需要黄瓜的,但是你要求其必须得卖黄瓜,因为这是上面“龟”定的