2013-12-11 68 views
2

我必須匹配給定變量的一些字符串。說我有變數正則表達式適用於瀏覽器,但不適用於Node.js

var x = 'elseif testing'; 

現在我想從這個字符串獲取值「測試」。所以寫道。

x.match(/^elseif(.*)/); 

晚,我意識到,有時我得到的字符串:

var x = 'else if testing'; 

所以我寫表達式匹配:

x.match(/^else[\s+]if(.*)/); 

這非常適用於瀏覽器,但不是在Node.js的任何理由?

+1

請注意,這不「在工作的browers好」 - 試試吧,它的行爲同樣在瀏覽器中node.js - 也就是說,它匹配'else if'和'else \ t if',但不匹配'elseif'。 '+'修飾符的含義是1或更多。你想要'*'修飾符,這意味着0或更多。 – slebetman

+1

那麼,瀏覽器和node.js沒有區別? – damphat

回答

2

嘗試沒有double escapescharacter class

x.match(/^else\s*if(.*)/i); 

而且不區分大小寫的搜索添加i

還要注意​​也將匹配,因爲裏面character class+(和許多其他的正則表達式特殊字符)文字+被認爲是文字加。

0

如果你想明確地匹配只有一個或零空格,然後:

x.match(/^else\s?if(.*)/i); 
相關問題