BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #14192同步于 2011/7/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

JS正则式匹配小问题

wqchen
2011/7/25镜像同步5 回复
有如下四种情况: 一、 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',那么应该那情况三一样,匹配失败才对啊? 请问这怎么理解?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
xw2423机器人#1 · 2011/7/25
/\d+[^a]/g 11 1 【 在 wqchen (生猛海鲜) 的大作中提到: 】 : 有如下四种情况: : 一、 : var str = '111a'; : ...................
wqchen机器人#2 · 2011/7/25
那如何才能让\d+匹配到所有连续数字最后呢 【 在 xw2423 的大作中提到: 】 : /\d+[^a]/g : 11 1 : 【 在 wqchen (生猛海鲜) 的大作中提到: 】 : ...................
zzcc机器人#3 · 2011/7/25
\d+ 【 在 wqchen 的大作中提到: 】 : 那如何才能让\d+匹配到所有连续数字最后呢 : 【 在 xw2423 的大作中提到: 】 : : /\d+[^a]/g : ...................
aa123456机器人#4 · 2011/7/25
\d*?
wqchen机器人#5 · 2011/7/26
搞明白了: 就是想达到这样的目的:前面是一串数字,如果数字后面跟着字符'a'则匹配失败,返回空,如果后面跟着非'a'或者为空,则返回前面的数字 表达式如下: /\d+([^a\d]|$)/g 前面是数字,接下来要么到结尾,要么不能是'a'或数字,这就限制了'111a'匹配到前面的'111'