JavaScript 正则表达式 指定匹配的位置
呃,这些日子的JavaScript 正则表达式系列快给大家愁坏了,呵呵。其实我自己也愁,愁的是想快点写完(学完)好继续新的内容。可是没办法啊,这玩意得一点点的来,快不起来的啊。。大家再忍耐一下。如果实在无法忍耐,就大概三天之后再来,我想到时候正则表达式这的内容我应该写完了的。呵呵。
在正则表达式中有一些特殊的序列匹配的不是实际的字符,而是字符串中某些特殊的字符位置。下面我将继续用表格的方式列出这些指定匹配的位置的字符,并逐一进行举例描述。
正则表达式的锚字符:
| 字符 | 含义 |
|---|---|
| ^ | 匹配字符串的开头,在多行检索中,匹配一行的开头 |
| $ | 匹配字符串的结尾,在多行检索中,匹配一行的结尾 |
| \b | 匹配一个词语的边界。简而言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头或结尾之间的位置(注意:[\b]匹配的是退格符) |
| \B | 匹配非词语边界的字符 |
| (?=p) | 正前向声明,要求接下来的字符都与模式p匹配,但是不包括匹配中的那些字符 |
| (?!p) | 反前向声明,要求接下来的字符不能与模式p匹配 |
举例描述:
1. ^ 匹配字符串的开头
这个应该很好理解,就好比说我要得到匹配”simaopig”的字符串,并且这个字符串得在前面,这里”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 = /\bsimaopig\b/;
// simaopig是独立的单词,所以其输出true
document.write(patt1.test("simaopig"));
document.write("\n");
// simaopig不是独立的单词,所以其输出false
document.write(patt1.test("asimaopig "));
4. \B 匹配的是一个词语不是边界的位置,可以理解为与\b 相反,不多解释
5. ?= 与 ?!你可以理解为这样的操作:第一种,你需要里面有一个规则,比如说你是城管,你想要小贩卖的东西里面必须有黄瓜,可是其实你是不需要黄瓜的,但是你要求其必须得卖黄瓜,因为这是上面“龟”定的
第二种,你需要的是这样一个规则,你要求小贩不能卖柿子,因为柿子是自己要卖的东西,但是其实你想要的东西吧仍然是小贩所卖的其他品种
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/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
原来还有堂课….抢家具先…慢慢看~~不知道为什么..我点表情没反应..
[回复]
@小Bee
呃。你是不是把GOOGLE设HOST了?我用其JQUERY了,如果那个DOWN不下来的话,点表情是没用的。呵。
[回复]
嗯…难道最近调用不了
http://ajax.googleapis.com/ ….
[回复]