2012-11-14 75 views
1

我回答了一个question about regexes,当时我注意到一些奇怪的东西。我正在测试RegexPal中的正则表达式,并且我得到了Chrome和Firefox告诉我的不同结果。RegexPal与浏览器不同

有问题的正则表达式是:/^\d*(\.\d{1,2}$)?/

在Firefox和Chrome中:/^\d*(\.\d{1,2}$)?/.test('-1')返回true,但RegexPal表示它不匹配。

http://regexpal.com/?flags=m&regex=%5E%5Cd%2A(%5C.%5Cd%7B1%2C2%7D%24)%3F&input=-1

我的猜测是,它有事情做的事实,正则表达式什么都没有,我的意思是空字符串相匹配。

正则表达式匹配字符串的开头,然后是0数字,然后是0的组,因此它会匹配-1,因为它适合模具,但“匹配”将是“没有”(空字符串)。

RegexPal为什么说它不匹配,但我的网页浏览器说它呢?

+0

该正则表达式应该与字面上的任何内容相匹配(您正在使'\ d'为可选,并且整个组也是可选的)。它看起来像RegexPal中的一个bug。 – NullUserException

+0

等一下。我只是想到了一些事情。正则表达式“高亮”匹配。所以,它试图突出匹配。这是一个空字符串,所以你看不到它。我知道X_X –

+0

出于好奇,有没有像假小马发电机或什么的?还是你自己画了那个化身? – NullUserException

回答

1

RegexPal正在工作,但它并不明显。正则表达式匹配空字符串,所以正则表达式会为您加亮。

那么,由于空的字符串是空的,你看不到它突出显示它。