Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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# Regex:识别不同格式的电话号码_C#_Regex - Fatal编程技术网

C# Regex:识别不同格式的电话号码

C# Regex:识别不同格式的电话号码,c#,regex,C#,Regex,我有一个网站,人们在那里写笑话。用户可以通过短信向他们(或他们的朋友)的手机发送他们喜欢的笑话。笑话的发送者(已将笑话添加到网站)显示在其下方: 笑话#12234 这就是这个笑话的主体 发件人:约翰 有些时候,人们用自己的电话号码作为发送者的名字,这在公共场合是不允许的。我想确定发件人姓名中是否有电话号码,以便能够对其进行审查。我假设任何大于6位数的数字都是电话号码。但问题是用户可能会将数字分开,如: 1234567890应该变成1234xx7890 1234567890应该变成123

我有一个网站,人们在那里写笑话。用户可以通过短信向他们(或他们的朋友)的手机发送他们喜欢的笑话。笑话的发送者(已将笑话添加到网站)显示在其下方:

笑话#12234

这就是这个笑话的主体
发件人:约翰


有些时候,人们用自己的电话号码作为发送者的名字,这在公共场合是不允许的。我想确定发件人姓名中是否有电话号码,以便能够对其进行审查。我假设任何大于6位数的数字都是电话号码。但问题是用户可能会将数字分开,如:

1234567890应该变成1234xx7890
1234567890应该变成123xxx7890
123-456-7890
123456-7890


等等。任何与上述格式类似的表格都应进行审查。我尝试删除非数字字符,然后使用正则表达式,但问题是它也会获取:

john23彼得森12345


有谁能提供更好的方法吗?

要保留所有格式,请替换

(\d{3}[-\s()]*)\d{3}([-\s()]*\d{4})

要进一步限制10位数字(即不允许在紧接前后添加其他数字),请使用否定环顾断言:

(?<!\d)(\d{3}[-\s()]*)\d{3}([-\s()]*\d{4})(?!\d)
^^^^^^^                                   ^^^^^^

但是,这可能会捕获“太多”,例如
1-2-3-4-5-6-7-8-9-0
。你必须确定你想要达到什么样的平衡。

因为世界上有很多电话号码格式,你可以使用这个正则表达式来识别任何电话号码
^[0-9-+s()]*$

不要删除所有非数字字符,只删除连字符、方括号和空格。我想,您应该通过JavaScript或HTML5在客户端执行所有限制,如果它有元素,只允许数字。非常感谢。问题是,正如我所说,电话号码可以是7到11位数字。此代码仅适用于10个用户。
(?<!\d)(\d{3}[-\s()]*)\d{3}([-\s()]*\d{4})(?!\d)
^^^^^^^                                   ^^^^^^
(?<!\d)((?:\d[-\s()]*){3})(?:\d[-\s()]*){3}((?:\d[-\s()]*){4})(?!\d)