簡體   English   中英

用於向電話號碼添加特殊字符的正則表達式

[英]Regular expression for adding special character to phone number

我添加了以下正則表達式來驗證手機號碼:

(^07[1,2,3,4,5,7,8,9][0-9]{7,8}$)

我想允許用戶也輸入一個#字符,我不知道在哪里輸入。他們可能需要在撥打號碼后輸入#字符,或者在號碼的開頭輸入撥打直接號碼或者延期。

首先,您當前的正則表達式匹配格式07,12345678 “數字”。 所以你需要將[1,2,3,4,5,7,8,9]更改為[1-9] (當你有一個-在一個字符類中的兩個字符之間時,它通常意味着有一個范圍)

如果你想接受一個可選的#字符,你可以使用? 量詞,表示0或1次。

^#?07[1-9][0-9]{7,8}#?$

regex101演示

除此之外,正如您在演示中所看到的,它還將匹配帶有兩個哈希值的數字; 一個在前面,一個在最后。 避免這種情況的一個選擇是使用一些條件(C#可以支持)。

^(#)?07[1-9][0-9]{7,8}(?(1)|#?)$

regex101演示

(?(1)|#?)基本上意味着如果第一個哈希匹配,那么就不應該匹配任何東西了。 否則,如果最初沒有匹配哈希,那么它可以匹配哈希,如果在數字的末尾有一個哈希。

在C#中,它有點像這樣:

Regex.Match(myString, @"^(#)?07[1-9][0-9]{7,8}(?(1)|#?)$");

或者你可以使用負向前瞻來確保數字中永遠不會有多個哈希值:

^(?!.*#.*#.*$)#?07[1-9][0-9]{7,8}#?$

暫無
暫無

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

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