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

Thr*_*mon 6 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})$'
            }
        });
Run Code Online (Sandbox Code Playgroud)

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

ant*_*hok 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})$/            
    }
});
Run Code Online (Sandbox Code Playgroud)

要么:

params: '^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$'
Run Code Online (Sandbox Code Playgroud)


Jes*_*aya 7

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

self.ContactPhone = ko.observable().extend({ phoneUS : true });
Run Code Online (Sandbox Code Playgroud)

更多列在这里.