我只想匹配以下任何一种格式:
(444) 444-4444
444-444-4444
以下是两个接近的表达式:
((?:(\(\d{3}\)\s)|(\d{3}-))\d{3}-\d{4})
((\(\d{3}\)\s)|(\d{3}-))\d{3}-\d{4}
两者都说,使用(###)
或###-
,然后添加###-####
问题是两个示例都匹配(###-###-####
和其他碰巧包含我所需字符串的模式。
如何确保仅确切的字符串匹配?
我在开始时已经看过一些带有插入符号的例子,但我还没有得到这个工作。我在红宝石工作。谢谢。
答案 0 :(得分:0)
input = ['(444) 444-4444', '444-444-4444', '444 444-4444']
input.grep /\A(\(\d{3}\) |\d{3}-)\d{3}-\d{4}\z/
#⇒ [
# [0] "(444) 444-4444",
# [1] "444-444-4444"
# ]
答案 1 :(得分:0)
您可以使用:
public static void main(String[] args) {
System.out.println("Pn (444) 444-4444 : " + validatePhoneNumber("(444) 444-4444"));
System.out.println("Pn 444-444-4444 : " + validatePhoneNumber("444-444-4444"));
}
private static boolean validatePhoneNumber(String phoneNo) {
if (phoneNo.matches("\\d{3}[-\\.\\s]\\d{3}[-\\.\\s]\\d{4}")) {
return true;
} else return phoneNo.matches("\\(\\d{3}\\) \\d{3}-\\d{4}");
}
答案 2 :(得分:0)
/^(((\(){1}(\d){3}(\){1}))(\ )(\d){3}(\-)(\d){4}|((\d){3}(\-)(\d){3}(\-)(\d){4}))/gm
使用这个正则表达式,我已经对它进行了测试,它适用于两种格式
您可以使用本网站进行进一步测试 http://www.regextester.com/6