我试过了:
self.username = ko.observable(data.username || null)
.extend({ required: true, maxLength: 50 })
.extend({ pattern: { message: 'Username cannot contain spaces.', params: '^\S*$' } });
和
self.username = ko.observable(data.username || null)
.extend({ required: true, maxLength: 50 })
.extend({ pattern: { message: 'Username cannot contain spaces.', params: '[\S]' } });
但即使使用“a”的值,也会标记验证错误。
表达式'^\S*$'
似乎适用于在线JavaScript正则表达式测试人员。
我不确定为什么会萎靡不振。
答案 0 :(得分:4)
使用字符串定义正则表达式时,需要转义任何反斜杠,因此它应该是:
self.username = ko.observable(data.username || null)
.extend({ required: true, maxLength: 50 })
.extend({ pattern: { message: 'Username cannot contain spaces.', params: '^\\S*$' } });
如果使用正则表达式文字而不是字符串,则无需转义反斜杠:
self.username = ko.observable(data.username || null)
.extend({ required: true, maxLength: 50 })
.extend({ pattern: { message: 'Username cannot contain spaces.', params: /^\S*$/ } });
答案 1 :(得分:0)
我假设您正在使用ko.validation?
如果修复正则表达式不起作用,你可以尝试这样的事情(未经测试)......
ko.validation.rules['doesntContain'] = {
validator: function (val, checkFor) {
return val.indexOf(checkFor) === -1;
},
message: 'The field must not contain [{0}]'
};
ko.validation.registerExtenders();
var myCustomObj = ko.observable(data.username || null).extend({ doesntContain: " " });