2013-01-11 84 views
0

可能重複:
Regular expression for SSN and phone number不允許SSN和電話號碼的字符串正則表達式

^(?!.*(\\d{16})|.*(\\d{9})|.*(\\d{3}-\\d{2}-\\d{4})|.*(\\d{3}-\\d{3}-\\d{3})).* 

以上regex不允許在字符串中SSN和電話號碼。但它也不允許\n(輸入字符)。如果用戶敲擊輸入兩行文字,則輸入regex失敗。

+0

我需要一個答案,所以我轉發了這個問題。它有什麼問題。 – user679526

+0

什麼是錯誤的是你重複你的「問題」。 Stack Exchange社區嚴重地對有意複製的內容皺眉。編輯你的第一個問題,使其成爲一個連貫的問題,它可能會重新打開。 – 2013-01-14 17:31:37

+0

哦,順便說一下,刪除自己的問題也會觸發問題禁令。 – 2013-01-14 17:32:09

回答

2

默認情況下,句點(.)與換行符不匹配。如果您無法配置DOTALL模式,請按照this SO answer,考慮以[\s\S]*(任意數量的非空白字符)而非.*結尾。

+0

謝謝。有用。 – user679526

+0

如果用戶輸入文本新行,然後輸入123-123-123。即使123-123-123格式無效,此內容仍被驗證爲正確。 – user679526

+0

@ user679526你是否修正了'。*'的每一個外觀,而不是最後一個?你複雜的否定斷言意味着你必須在替換時非常冗長。或者,尋找一種方式來說「如果你發現這個正則表達式,字符串是無效的」,這可能會更簡單和更容易維護。 –

相關問題