kathyrani  

问题:想要匹配字符串“hello_www_1207” 中的www(即以"hello_"开头,"_1207字"结尾的中间的全部字符)

1.正向欲查

形式:(?=pattern)   --------要匹配的字符串,后面必须紧跟着pattern,但括号里的内容并不参与真正的匹配结果

例子:

var reg = /^hello_.*(?=_1207)/;

var str = "hello_www_1207";

var result = reg.exec(str);

 

结果:hello_www

注:JavaScript里的正则不支持(?=xx)xxx的模式,只支持xxx(?=xx)的模式

2.由于js不支持(?=xx)xxx的模式,所以只能将hello_后边的内容作为子正则表达式,再在后面引用

例:

var reg = /^hello_(.*)_1207/;

var str = "hello_www_1207";

var result = reg.exec(str);

结果:hello_www_1207,www  ------www是子正则表达式(即括号内匹配的结果)

 

解决办法:

var reg = /^hello_(.*)_1207/;

var str = "hello_www_1207";

if(reg.test(str )){
result = str.replace(reg, "$1");
}

alert(result);

结果:www   

结论:$1,表示引用第一个子正则表达式的内容

 

补充:

regExp对象方法:

exec:检索字符串中指定的值。返回找到的值,并确定其位置。

text:仅仅检查是否能够匹配str,并且返回布尔值以表示是否成功

compile:编译正则表达式。

 

支持正则表达式的string对象方法:

replace:替换与正则表达式匹配的子串。

split:把字符串分割为字符串数组。

match:找到一个或多个正则表达式的匹配。

search:检索与正则表达式相匹配的值。

posted on 2012-07-10 15:38  kathyrani  阅读(1351)  评论(0编辑  收藏  举报