2015-08-14 66 views
4

我試圖使用angular的ng模式屬性來強制輸入框中的文本匹配特定的正則表達式。我正在做這個表單驗證。我使用的輸入是手機領域。電話字段可以接受10位數的電話號碼,但我不想要求我的用戶使用特定的格式,除非它必須包含某個地方的10位數字。所以這些都是有效的。正則表達式匹配字符串中任意位置的一定數量的數字

  • 555-555-5555
  • (555)555-5555

在後端,我只想刪除所有格式和存儲原始數字。在過去,我所做的是刪除所有非數字字符,然後確保長度== 10.它足夠簡單,可以在幾行代碼中完成,但它是正則表達式可以處理的東西?這不是我曾經嘗試過的一個正則表達式。我不想支持特定的格式,因爲我不在乎他們是否意外地輸入了額外的空間,或者他們是否想要鍵入他們的電話號碼,如下所示:55-55-55-55-55。對我來說真的沒有關係,我只是想要正則表達式匹配,如果有10個數字並且不在字符串中的某處。

感謝您的幫助!

+0

['^(?:\ D * \ d){10} \ D * $'](https://regex101.com/r/dR0kS6/1)? –

+0

爲什麼你不允許只允許數字,然後應用一致的格式,例如在[kendo UI masked textbox](http://demos.telerik.com/kendo-ui/maskedtextbox/index)示例中。通過這種方式,用戶不必應用格式化,而且您始終可以確切知道您將接收的格式。 – War10ck

+0

對於@ stribizhev的方法,我認爲['(\ d \ D *?){10}'](https://regex101.com/r/nE7pE1/1)更好。 – Shadowen

回答

3

要允許僅有10位在正則表達式的字符串,不多不少,你可以使用

^(?:\D*\d){10}\D*$ 

demo\D替換[^\d\n]爲排除演示換行符只) 。

(\d\D*?){10}正則表達式會在超過10位數的字符串中找到匹配項。

0

您可以爲其設置屬性類型指令並使用動態正則表達式設置合法性。

相關問題