【问题标题】:Knockout-Validation Using Regular Expression to Validate a Phone Number使用正则表达式验证电话号码的淘汰赛验证
【发布时间】:2013-03-24 06:06:59
【问题描述】:

我正在尝试使用 Knockout-Validation 向我的一个可观察对象添加一个简单的正则表达式验证。

我有以下:

self.ContactPhone = ko.observable().extend({
            required: true,
            pattern: {
                message: 'Invalid phone number.',
                params: '^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$'
            }
        });

但是,无论我输入什么,它都会返回消息“电话号码无效”。我需要以某种方式格式化表达式吗?我已经使用纯 JavaScript 对其进行了测试,它运行良好。

【问题讨论】:

    标签: knockout.js knockout-validation


    【解决方案1】:

    您需要转义反斜杠,否则 javascript 会将您的一个反斜杠本身视为下一个字符的转义字符。这是因为这是一个字符串,而不是正则表达式文字。

    编辑:实际上我刚刚检查过,您可以使用正则表达式文字代替,因此其中任何一个都可以:

    http://jsfiddle.net/antishok/ED3Mh/2/

    self.ContactPhone = ko.observable().extend({
        required: true,
        pattern: {
            message: 'Invalid phone number.',
            params: /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/            
        }
    });
    

    或:

    params: '^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$'
    

    【讨论】:

      【解决方案2】:

      如果你不必使用正则表达式,这里是原生方式

      self.ContactPhone = ko.observable().extend({ phoneUS : true });
      

      更多列表here

      【讨论】:

      【解决方案3】:

      使用正则表达式在 jsfiddle 中查看以下工作示例,该正则表达式允许空格和 + and() 以及链接后面的数字

      jsfiddle.net/JoelDerrick/f6g8npv6/1/

      【讨论】:

        猜你喜欢
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-09
        • 2014-01-12
        • 1970-01-01
        • 2011-10-18
        相关资源
        最近更新 更多