7

我正在尝试使用 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 对其进行了测试,并且效果很好。

4

3 回答 3

12

您需要转义反斜杠,否则 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})$'
于 2013-04-03T04:30:51.210 回答
7

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

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

更多在这里列出。

于 2014-03-07T19:33:23.313 回答
0

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

jsfiddle.net/JoelDerrick/f6g8npv6/1/

于 2015-06-30T10:05:58.897 回答