我正在开发一个使用 MVC 3 和 knockoutjs 库的应用程序。我也在研究 knockout 验证插件。我需要验证允许符号的输入文本值。据我所知,这些没有原生规则,所以我必须创建一个自定义规则。不好的是我对正则表达式和javascript的了解很差。我需要编写一个自定义函数来验证文本框输入字段并且不允许使用非英语字符。所有其他符号都是允许的。我想我将能够创建自定义规则,但我需要验证输入字段的正则表达式。任何有关工作示例的帮助将不胜感激。谢谢!
最佳答案
does not allow non-english characters
和
All the other symbols are permitted
这对我来说似乎很矛盾,但我会尽力提供帮助:)
首先,您应该考虑使用 Ajax 进行验证,因为服务器端语言通常对 Unicode 有更好的支持。如果这不是一个选项,那么首先添加 XRegExp图书馆 Unicode plugin到您的页面。
要创建支持 Unicode 的正则表达式,请使用以下形式:
var englishLettersOrSymbols = XRegExp('[\\p{^Letter}\\p{Latin}]*');
这里我们说我们接受零个或多个 (... *
) 符号,并且每个符号都是 ([ ... ]
) 非字母 (\\p{^Letter}
) 或基本拉丁字母表中的字母 (\\p{Latin}
)。
现在您的自定义验证规则将如下所示:
ko.validation.rules['englishLettersOrSymbols'] = {
validator: function(value){
var rule= XRegExp('[\\p{^Letter}\\p{Latin}]*');
return rule.test(value);
},
message: 'Sorry, {0} this is not valid'
};
您可以在代码中使用它,如下所示:
var vewModel = {
// ...
myField: ko.observable().extend({englishLettersOrSymbols: true}),
// ...
};
编辑:从正则表达式中删除了|
。谢谢,@slevithan 。这本身并不是一个错误,因为 \\p{^Letter}
已经包含 |
符号,因此,正则表达式仍然会工作。然而,这是相当误导的。
关于javascript - 使用knockoutjs验证输入文本框是否包含非英语字符的自定义规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583896/