2011-12-16 73 views
1

我正在使用包含構建表單的能力以及對這些表單使用JS驗證的CMS。如果需要,我們可以用我們自己的正則表達式替換現有的驗證規則。JavaScript正則表達式幫助:驗證電話號碼,但不包括555號碼(與此匹配,但不是)

目前,代替正則表達式的電話號碼字段是:

^(?1個\ S * [ - /])(((\ d {3}))|(\ d {3}))\ S * [ - /。] \ S *(\ d {3})\ S *?[ - /] \ S *(\ d {4})\ S *(([XX ] | \ s *(\ d +))* $

這工作正常,但我們也想排除該區域有555個數字代碼或交換。雖然這些技術數據符合電話號碼規範,但決策者希望將它們濾除,因爲它們通常不是「真實」的數字。

我不能正確理解如何處理「匹配這個,但不是那種」表達式的正則表達式。任何人都可以提供任何建議/協助?

謝謝!

+0

它可能是不值得你的時間來排除這些數字。通過這樣做(首先擁有如此嚴格的正則表達式),你已經排除了美國以外的其他國家。我建議你降低進入的門檻,特別是如果這些表格用於以任何方式賺錢的話。 – cdeszaq 2011-12-16 14:08:34

+2

如果你問多個問題,「這是一個電話號碼?」,「這是一個'555-'號碼嗎?」那麼我會把它分成單獨的(註釋)代碼行,而不是構建一個龐大的,不可讀的正則表達式。 `isPhoneNumber(str)&&!startsWith('555',str)` – Gareth 2011-12-16 14:09:44

回答

1

你可以做一個負前瞻與(?!555)。把它放在^(1\s*[-/.]?)?之後。它w

0

我不知道電話號碼中的「區號」或「交換」部分在哪裏,但您只需在相關部分之前添加負面預覽。

此,例如,將匹配三個數字,除了555:(?!555)\d{3}

相關問題