C#从字符串中删除电话号码
我想使用C#从字符串中删除电话号码。我一直在尝试使用不同的regex变体,但收效甚微 我想要一个快速执行的解决方案(如果可能的话,可以使用sub 0.1s),因为它将在生产环境中广泛使用 这是我一直在测试的代码C#从字符串中删除电话号码,c#,regex,phone-number,C#,Regex,Phone Number,我想使用C#从字符串中删除电话号码。我一直在尝试使用不同的regex变体,但收效甚微 我想要一个快速执行的解决方案(如果可能的话,可以使用sub 0.1s),因为它将在生产环境中广泛使用 这是我一直在测试的代码 var stringContainingPhoneNumber = "This is some random text, I would like £4.99 for this item, please call me on 07828123456 for further informa
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]");
您可能需要使用电话格式库来识别有效的电话号码。你可以用你想要的任何东西来代替它们。你可以用
这应该适用于您的正则表达式
\d{11}[\s\d-]+
正则表达式中的数字将匹配字符串中该长度的数字序列。只需将正则表达式更改为
var numberReplace = new Regex(@"((\d){3}-1234567)|((\d){3}\-(\d){3}\-4567)|((\d){3}1234567)|(\b(\d){5}123456\b)");
您的正则表达式不起作用,因为在输入字符串中,电话号码包含11位数字,但在您的模式中,只有10位数字。此外,它也不是以假定英国数字的123456结尾,例如: “这是一些随机文本,我想要4.99英镑购买此商品,请致电07828123456了解更多信息,或通过(020)2341 0231或(01204)54203发送传真。” 这应该只得到电话号码:
[\d\s-\(\)]{10,}您知道要删除的电话号码的确切格式吗?Id不起作用,因为您的示例中的电话号码以
123456
结尾,而您的模式有1234567
这些链接可能会很有帮助:看看这篇文章的第二个答案人们可以使用多种格式,由于输入将是来自另一个网站的免费文本输入。这工作很好,感谢括号的建议,因为我没有考虑过。非常感谢。