我正在尝试将字符串验证为电话号码(数字和某些特殊字符)。我从这里使用了现有的代码段:http://snippets.dzone.com/posts/show/597这似乎是正确的。但是每次string.match(format)返回null,这将导致显示错误消息。

var format = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;
var string = jQuery(".validate_phone").val();
if (string.match(format) != true) {
  // some error message
}


我已经检查过,string已填充了期望值。

以下值应匹配:
339-4248
339-42-48
339 42 48
339 4248
3394248
(095)3394248
(095)3394248
+7(095)3394248
+7(095)3394248
+7(095)3394248
+7(095)3394248

其他所有内容都应显示错误消息。

此代码有什么问题?提前致谢!

更新:这是一个测试用例http://labuschin.com/material/phone

最佳答案

Facebook上的一个朋友成功地帮助了我:

var format = /(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}/;
var nr= prompt("Phone number", "");
if (nr.match(format) == null) {
  alert ("incorrect");
} else {
  alert ("correct");
}


更改了if子句,并删除了开头的^和结尾的$。在这里工作:http://labuschin.com/material/phone

10-08 12:52