簡體   English   中英

簡單的電話號碼正則表達式以匹配數字,空格等

[英]Simple phone number regex to match numbers, spaces, etc

我正在嘗試在C#中修改一個相當基本的正則表達式模式,以測試電話號碼。

模式是-

[0-9]+(\.[0-9][0-9]?)?

我有兩個問題-

1)現有的表達式確實可以工作(盡管它是限制性的),但是我不太理解它是如何工作的。 解決類似問題的正則表達式看起來更像是這個-

/^[0-9()]+$/

2)如何擴展此模式以允許方括號,句號和單個空格分隔數字。 我嘗試了一些變化以包括-

[0-9().+\s?](\.[0-9][0-9]?)?

雖然我似乎無法創建有效的模式。

任何幫助將非常感激。

謝謝,

字符集后的+至少是一個量詞(表示前面的字符,字符集或組被重復),並且次數不限且貪婪(最匹配)。

然后[0-9().+\\s]+將匹配集合中的任何字符一次或多次。

[0-9]+(\.[0-9][0-9]?)?

首先,我建議您查看regexr.com或regex101.com,這樣您自己就可以了解regex的工作原理。 這兩個網站都會為您提供有關正則表達式中每個符號作用的逐步說明。

現在,您必須了解的主要內容之一是regex具有特殊字符 其中包括以下內容: []().-+*?\\^$ 因此,如果您希望您的正則表達式匹配文字. ,例如,您必須對其進行轉義,因為它是一個特殊字符。 為此,請使用\\. [.] 反斜杠用於轉義其他字符,而[]表示“匹配此集合中的任何一個字符”。 一些特殊字符在這些括號內沒有特殊含義,並且不需要轉義。

因此,上面的正則表達式將匹配長度為1或更大的數字的任意組合,后跟可選的后綴(foobar)? ,必須是一個點,后跟一個或兩個數字。 實際上,此正則表達式似乎更應該與小數點匹配,點號后面最多可以有兩位數字,而不是電話號碼。

/^[0-9()]+$/

這非常簡單-匹配長度為1或更大的數字或圓括號的任何組合。

[0-9().+\s?](\.[0-9][0-9]?)?

您在這里匹配的是:

  • 數字,圓括號,點,加號,空格或問號之一; 只有一次
  • (可選)后跟一個點和一個或兩位數字

適合您的正則表達式可以是:

(\+\d{2})?((\(0\)\d{2,3})|\d{2,3})?\d+

在上面提到的網站之一中輸入此內容以了解其工作原理。 我對其進行了一些修改,例如+49 1234567890。此外,為簡單起見,我不包含空格-因此,使用此正則表達式時,必須首先刪除輸入中的所有空格。 在C#中,可以使用yourString.Replace(" ", ""); (簡單地用空格替換所有空格=刪除空格)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM