Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于向电话号码添加特殊字符的正则表达式_C#_Regex_Validation - Fatal编程技术网

C# 用于向电话号码添加特殊字符的正则表达式

C# 用于向电话号码添加特殊字符的正则表达式,c#,regex,validation,C#,Regex,Validation,我添加了以下用于验证移动电话号码的正则表达式: (^07[1,2,3,4,5,7,8,9][0-9]{7,8}$) 我想允许用户也输入一个#字符,但我不确定该字符的位置。他们可能需要在拨完号码后输入#字符,或者在号码的开头输入直拨号码或分机。首先,您当前的正则表达式也与格式为0712345678的“数字”匹配。因此,您需要将[1,2,3,4,5,7,8,9]更改为[1-9](当字符类中两个字符之间存在-时,通常意味着存在一个范围) 如果要接受可选的#字符,可以使用?量词,表示0或1次 ^#?0

我添加了以下用于验证移动电话号码的正则表达式:

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

我想允许用户也输入一个
#
字符,但我不确定该字符的位置。他们可能需要在拨完号码后输入
#
字符,或者在号码的开头输入直拨号码或分机。

首先,您当前的正则表达式也与格式为
0712345678
的“数字”匹配。因此,您需要将
[1,2,3,4,5,7,8,9]
更改为
[1-9]
(当字符类中两个字符之间存在
-
时,通常意味着存在一个范围)

如果要接受可选的
#
字符,可以使用
量词,表示0或1次

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

除此之外,正如您在演示中看到的,它还将使用两个哈希匹配数字;一个在前面,一个在后面。避免这种情况的一个选择是使用一些条件(C#可以支持)

(?(1)|#?)
基本上意味着如果第一个散列被匹配,那么就不应该再匹配任何内容。否则,如果最初没有匹配任何哈希,那么它可以匹配一个哈希(如果在数字的末尾有一个)

在C#中,有点像这样:

Regex.Match(myString, @"^(#)?07[1-9][0-9]{7,8}(?(1)|#?)$");
或者,您可以使用负前瞻来确保数字中的哈希值不超过一个:

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

所以你的电话号码也接受
!(^07[1,2,3,4,5,7,8,9 |#][0-9 |#]{7,8}$)?我正在使用c语言,两个都接受11或12个数字,但是仍然不允许使用[1-9]而不是[1,2,3,4,5,7,8,9]?这是处理只出现一次的好方法。
^(?!.*#.*#.*$)#?07[1-9][0-9]{7,8}#?$