2013-01-08 19 views
2

考慮下面的代碼片段:正則表達式的臭蟲以速記字符類

var regex = /^\d+$/; // equivalent to new RegExp('^\\d+$'); 

console.println(regex.test('000')); 
console.println(regex.test('abc0')); 
console.println(regex.test('ddd')); 

人們期望的輸出是:

true 
false 
false 

然而,當我在使用Adobe Acrobat X運行,它運行JavaScript 1.8,它輸出:

false 
false 
true 

這是怎麼回事?

+0

這很瘋狂,但嘗試轉義反斜槓。 '/^\\ d + $ /',看看你得到了什麼。 – FrankieTheKneeMan

+0

這很奇怪。 '^ [0-9] + $'是否有效? – Blender

+0

[我無法重現此](http://jsfiddle.net/6ajVD/)。我得到了預期的產出。 @FrankieTheKneeMan,逃避它是不需要的,因爲它是一個正則表達式。 – vcsjones

回答

3

這可能是通向Javascript解釋器的字符串處理的結果,導致您的\d被解釋爲d。一個額外的反斜槓(顯然)是訣竅。

/^\\d+$/ 
+0

這很奇怪。現在'/^\ d + $ /'起作用。我不知道發生了什麼,但如果問題回來了,我知道我該如何處理它。 – 999999

+0

Hoorah宇宙射線。 – FrankieTheKneeMan