2016-08-15 43 views
0

Javascript中的正則表達式有問題。 我需要從字符串中檢索IP地址。 我用regex101.com測試了我的正則表達式,一切正常。Javascript正則表達式一直返回false

這裏是我的正則表達式:

var regex = new RegExp('(\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b:[0-9]+)|(localhost:[0-9]+)', 'i'); 

而且這裏的片斷我

console.log(regex.test('127.0.0.1:8080/test')); 

結果始終爲假。

我嘗試了幾種方法,string.match,正則表達式包v0.1.1也。

有什麼我失蹤?

謝謝。

+0

你試圖匹配哪部分字符串? – guest271314

+0

另一個可能的重複:http://stackoverflow.com/q/37516721/5743988 – 4castle

+0

我想從字符串的開頭找到一個IP地址。 – ElCapitaine

回答

1

問題在於你還沒有逃過你的反斜槓。

var regex = new RegExp('(\\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\\b:[0-9]+)|(localhost:[0-9]+)', 'i'); 

console.log(regex.test('127.0.0.1:8080/test')); 
> true 

這裏的根本問題是,反斜線有特殊含義的轉義字符,既爲JavaScript 到正則表達式。

因此,當JavaScript看到您的'\b'時,它將其解釋爲轉義字符 - 在這種情況下是退格字符。這個解釋發生在之前它到達RegExp引擎。

所以,你需要通過加倍來逃避你的反斜槓。

+0

是的,這是,非常感謝! – ElCapitaine

相關問題