我想使用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]");
答案 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,}