C#从字符串中删除电话号码

时间:2014-07-30 08:29:14

标签: c# regex phone-number

我想使用C#从字符串中删除电话号码。我一直在尝试使用正则表达式的不同变体而收效甚微。

我想要一个快速执行的解决方案(如果可能,则为0.1秒),因为它将在生产环境中广泛使用。

这是我一直在测试的代码。

var stringContainingPhoneNumber = "This is some random text, I would like £4.99 for this item, please call me on 07828123456 for further information.";
var numberReplace = new Regex(@"((\d){3}-1234567)|((\d){3}\-(\d){3}\-4567)|((\d){3}1234567)");
stringContainingPhoneNumber = numberReplace.Replace(stringContainingPhoneNumber, "[TELEPHONE REMOVED]");

4 个答案:

答案 0 :(得分:1)

您可能需要使用电话格式库来识别有效的电话号码。你可以用任何你想要的东西替换它们。你可以使用

http://blog.appharbor.com/2012/02/03/net-phone-number-validation-with-google-libphonenumber

答案 1 :(得分:0)

这适用于你的正则表达式。

\d{11}[\s\d-]+

正则表达式中的数字将匹配字符串中该长度的数字序列。

答案 2 :(得分:0)

只需将正则表达式更改为

即可
var numberReplace = new Regex(@"((\d){3}-1234567)|((\d){3}\-(\d){3}\-4567)|((\d){3}1234567)|(\b(\d){5}123456\b)");

你的正则表达式不起作用,因为在输入字符串中,电话号码包含11位数,但在你的模式中,只有10位数。它也不以123456

结尾

答案 3 :(得分:0)

假设英国的数字,例如:

“这是一些随机文字,我希望此项目的费用为4.99英镑,请致电07828123456获取更多信息,或发送传真至(020)2341 0231或(01204)54203。”

这应该只是电话号码:

[\ d \ S - \(\){10,}