2017-02-22 102 views
0

當我在regex101.com上嘗試它時,以下正則表達式看起來不錯,但它在我的Javascript(瀏覽器& nodejs)上不起作用。Javascript/NodeJS正則表達式(電話號碼)無效組錯誤

(?i)(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?) 

什麼是JavaScript的正確的正則表達式?

P.S:

有些案件在這裏:

650-283-4757 
+1 6502834757 
+33 4 76095663 
06 2070 2220 
(650)-283-4757 ext 897 
+355 693502415 
+0

什麼是正則表達式應該做什麼? – robert

+2

當在regex101中測試JS regex時,你應該切換到JS模式。它會向你展示'(?i)'作爲缺陷部分,因爲內聯修飾符不被JS正則表達式支持。 –

回答

2

這是因爲在線修改(?i)的。 JS不會支持包含在正則表達式模式中的修飾符。

/(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?)/i 

所以,你必須添加修飾語旁邊模式定界符/

+0

很快:)。有用。 –

+0

@TediÇela如果你非常喜歡它,請接受Avinash的回答。 –

+0

@Cobus克魯格我無法接受答案,因爲它很快:)。我的意思是,在我問了10分鐘之後,我禁止我接受答案。 –

1

在第一組開頭的問號是無效字符。

無效

(?i)(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?) 

也許你的意思

(?:i)(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?) 

這標誌着第一組爲 「非捕獲」。

或者你的意思

/(\+?[0-9\(][0-9\- \(\)\.]{6,16}(?e?xt?\.? ?\d+)?)/i 

這對於忽略大小寫標誌着正則表達式。

下次我深深地推薦你在regexr.com上測試正則表達式

+0

正如你深深地推薦regexr - 在JS模式下使用regex101有什麼優勢? –