首页 > JavaScript > JavaScript 正则表达式 指定匹配的位置
2009八月9

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

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

第二种,你需要的是这样一个规则,你要求小贩不能卖柿子,因为柿子是自己要卖的东西,但是其实你想要的东西吧仍然是小贩所卖的其他品种

// 要求字符串里必须得以simaopig 开头,且其后面必须得有:,但是我真正匹配的内容是simaopig
var patt1=new RegExp("^simaopig(?=\\:)");
// 输出true
document.write(patt1.test("simaopig: is a true man, it's true"));
document.write("\n");
// 输出false
document.write(patt1.test("simaopig welcome come to xiaoxiaozi.com it's wrong"));

总结及唠叨:

这玩意就是这样,用的时候来翻一下吧,因为我觉得自己是背不下来的,不过我之所以给出具体示例,是因为示例要比枯燥的定义更容易理解。熟能生巧。

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/08/09/1320/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

3 Responses to “JavaScript 正则表达式 指定匹配的位置”

  1. #1 小Bee 回复 | 引用 Post:2009-08-10 10:44

    原来还有堂课….抢家具先…慢慢看~~不知道为什么..我点表情没反应..

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-08-10 10:47

    @小Bee
    呃。你是不是把GOOGLE设HOST了?我用其JQUERY了,如果那个DOWN不下来的话,点表情是没用的。呵。

    [回复]

  3. #3 吖Bee 回复 | 引用 Post:2009-08-10 14:07

    嗯…难道最近调用不了
    http://ajax.googleapis.com/ …. :cry:

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)