使用正则表达式验证电话号码的敲除验证

时间:2013-04-02 19:29:56

标签: knockout.js knockout-validation

我正在尝试使用Knockout-Validation为我的一个observable添加一个简单的正则表达式验证。

我有以下内容:

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

但是,无论我输入什么内容,都会返回“无效的电话号码”消息。我需要以某种方式格式化表达式吗?我使用纯JavaScript测试它,它工作正常。

3 个答案:

答案 0 :(得分:11)

你需要转义反斜杠,否则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})$'

答案 1 :(得分:7)

如果您不必使用正则表达式,这是本地方式

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

更多列出here

答案 2 :(得分:0)

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

jsfiddle.net/JoelDerrick/f6g8npv6/1 /