我正在尝试使用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测试它,它工作正常。
答案 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)
答案 2 :(得分:0)
使用正则表达式在jsfiddle中查看下面的工作示例,该表达式允许使用空格和+和()以及链接后的数字
jsfiddle.net/JoelDerrick/f6g8npv6/1 /