【问题标题】:jQuery Validation Add Method Regex Number with ParenthesesjQuery Validation Add Method Regex Number with parentheses
【发布时间】: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");

此代码有效并且可以有效以+6390963 开头的任何数字,除非它以(+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


【解决方案1】:

^(9|09|\+?639|\(\+63\)\s?9?)\d{9}$

这验证了:

+639123456789
9123456789
(+63)9123456789
(+63) 9123456789
(+63)123456789
(+63) 123456789

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-06
    • 2013-11-02
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多