选择包含电话号码的行的正则表达式

时间:2012-09-19 20:20:07

标签: regex

我为正则表达式编写了代码,用于选择包含电话号码的行。我必须为电话号码创建一个表达式,但它可能有 - 或。在数字之间,它可能有也可能没有扩展名。我无法弄清楚并没有提交作为我的作业......我只是想知道它是如何做的,因为我可能会在学期结束时参加考试。

718-951-5000, 718.951.5000, (718)-951-5000

我的代码

     "(^(\([2-9]\\d{2}\)|[2-9]\\d{2})[- .]?\d{3}[- .]?\\d{4}$)|(^(\([2-9]\\d{2}\)|[2-9]\\d{2})[- .]?\d{3}[- .]?\\d{4}[xX]\\d{1,4}$)"  

我的错误 RETest1.java:4:错误:非法转义字符

                  "(^(\([2-9]\\d{2}\)|[2-9]\\d{2})[- .]?\\d{3}[- .]?\\d{4}$)|(^(\([2-9]\\d{2}\)|[2-9]\\d{2})[- .]?\\d{3}[- .]?\\d{4}[xX]\\d{1,4}$)"
                       ^

2 个答案:

答案 0 :(得分:1)

它可能不是最漂亮的,但这里有一个有效:

"^((\\([2-9]\\d{2}\\)|[2-9]\\d{2})(-\\d{3}-\\d{4}|\\.\\d{3}\\.\\d{4})([Xx] ?\\d{1,4})?)$"

答案 1 :(得分:0)

[- .]?\d{3}[- .]?

您忘记了\

上的第二次逃脱\d

应该是: "(^(\([2-9]\\d{2}\)|[2-9]\\d{2})[- .]?\\d{3}[- .]?\\d{4}$)|(^(\([2-9]\\d{2}\)|[2-9]\\d{2})[- .]?\\d{3}[- .]?\\d{4}[xX]\\d{1,4}$)"