2016-03-07 49 views
0

我有這樣的正則表達式查找電話號碼的代碼庫:僅匹配,如果沒有一個數字之前或之後

\\d{3}[\.\s-]?\d{3}[\.\s-]?\d{4}\g 

我怎麼能修改此使其不會匹配情況,其中號碼前面還是後面跟着一個數字?

18005555555 (should not match) 
80055555551 (should not match) 
"8005555555" (should match) 
s800-555-5555 (should match) 
8005555555 (should match) 
800.555.5555 (should match) 

編輯: 我並不想爲「匹配整個單詞」,因爲它是不夠的比賽在之前和之後一個空格。見上面的第三個例子,它也應該返回一個匹配。

我想只匹配匹配前面或後面沒有數字的情況。

在別人的話:

[NOT DIGIT][PHONE NUMBER][NOT DIGIT] 
+0

以'^'和'$'附上? ['/^\d{3}[.\s-]?\d{3}[.\s-]?\d{4}$/'](https://regex101.com/r/oI4dT9/ 3) –

+0

或使用單詞邊界'\ b'(如果它包含在文本中) –

+0

請參閱上面的我的編輯。 – Himmel

回答

1

前瞻和回顧後會幫助你與這些限制 - 如果他們的支持,像

/(?<!\d)\d{3}[.\s-]?\d{3}[.\s-]?\d{4}(?!\d)/g 

您可以(?:^|\D)更換回顧後(?<!\d)如果不是支持的。如果不支持,您可以用(?:\D|$)替代lookahead (?!\d)

你可以在這裏找到一個演示:https://regex101.com/r/aS8jQ8/1

相關問題