这个正则表达式出了什么问题?

时间:2009-03-19 00:31:14

标签: c# regex

这几乎可以肯定是我所忽略的傻事,但我很难过。以下C#样式表达式应该匹配电话号码(它们的有限子集,但这只是测试...):

^[0-9]{3}-[0-9]{3}-[0-9]{4}$

搜索字符串如下:

978-454-0586\r\nother junk\r\nmore junk\r\nhttp://www.google.com\r\n

表达式在隔离时与电话号码匹配,但不在其他内容旁边时。例如,如果我在手机后丢掉所有东西,那就很棒了。

如何修改表达式以使其与电话号码匹配,并且不会挂在其余的垃圾邮件上?

谢谢!

5 个答案:

答案 0 :(得分:5)

^和$符号分别表示“行首”和“行尾”。如果你想在一条线的中间匹配,摆脱它们。

答案 1 :(得分:4)

正则表达式中的

“$”匹配行的结尾。如果你删除它,正则表达式应该可以正常工作,但如果你有“Foo978-454-0586”,它将无法工作,因为“^”匹配一行的开头。

答案 2 :(得分:3)

电话号码是否总是在自己的线路上?如果是这样,请将RegexOptions.Multiline添加到Regex构造函数中。没有它,regex.match正在使用^和$。

的字符串的开头和结尾

答案 3 :(得分:1)

$表示字符串的结尾,而不是行尾。

答案 4 :(得分:1)

问题在于“^”和“$”强制它仅匹配字符串的开头和字符串的结尾。

删除这两个标签,看看你怎么做。