返回信息流有如下四种情况:
一、
var str = '111a';
document.write( str.match( /\d+[a]/g ) ); //111a
二、
var str = '111a';
document.write( str.match( /\d+[^b]/g ) ); //111a
三、
var str = '111a';
document.write( str.match( /\d+[b]/g ) ); //null
四、
var str = '111a';
document.write( str.match( /\d+[^a]/g ) ); //111
问题,情况四为什么能匹配出'111'?按我的理解,该式子应该是:数字,接下来是非'a',如果接下来是'a',那么应该那情况三一样,匹配失败才对啊?
请问这怎么理解?
这是一条镜像帖。来源:北邮人论坛 / www-technology / #14192同步于 2011/7/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
JS正则式匹配小问题
wqchen
2011/7/25镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
/\d+[^a]/g
11 1
【 在 wqchen (生猛海鲜) 的大作中提到: 】
: 有如下四种情况:
: 一、
: var str = '111a';
: ...................
那如何才能让\d+匹配到所有连续数字最后呢
【 在 xw2423 的大作中提到: 】
: /\d+[^a]/g
: 11 1
: 【 在 wqchen (生猛海鲜) 的大作中提到: 】
: ...................
\d+
【 在 wqchen 的大作中提到: 】
: 那如何才能让\d+匹配到所有连续数字最后呢
: 【 在 xw2423 的大作中提到: 】
: : /\d+[^a]/g
: ...................
搞明白了:
就是想达到这样的目的:前面是一串数字,如果数字后面跟着字符'a'则匹配失败,返回空,如果后面跟着非'a'或者为空,则返回前面的数字
表达式如下:
/\d+([^a\d]|$)/g
前面是数字,接下来要么到结尾,要么不能是'a'或数字,这就限制了'111a'匹配到前面的'111'