【发布时间】:2018-12-13 11:56:46
【问题描述】:
我正在使用带有输入字段的jquery validate plugin,该字段要求在其中输入电话号码,并且我想添加一个带有正则表达式的验证器方法,该方法将验证任何以“9 or 09 or +639 or 639 or (+63) or (+63) 9”和 9 位数字开头的数字之后
jQuery.validator.addMethod("phoneno", function(phone_number, element) {
phone_number = phone_number.replace(/\s+/g, "");
return this.optional(element) || phone_number.length > 9 &&
//phone_number.match(/^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/);
phone_number.match(/^(9|09|\+639|639|\((\+63)\) 9)\d{9}$/);
}, "<br />Please specify a valid phone number");
此代码有效并且可以有效以+63、9、09、63 开头的任何数字,除非它以(+63) 或(+63) 9 开头
例如,它有效 +639123456789 639123456789 9123456789 但不带括号
我认为匹配正则表达式有错误
【问题讨论】:
-
它匹配
(+63) 9123456789- 你在 9 前面有一个空格。regexr.com/44sf2 如果这不是你想要的,你需要解释它应该如何更好地工作。要添加(+63),您需要另一个|,即:^(9|09|\+639|639|\(\+63\) 9|\(\+63\))\d{9}$ -
您应该稍微清理一下正则表达式(例如,+639 或 639 只是 \+?639,无需执行 +639|639)。你可以使用regex101.com来帮助你。
标签: javascript jquery regex validation