2

我正在使用 MVC 3 和 knockoutjs 库开发应用程序。另外我正在研究淘汰赛验证插件。我需要验证允许符号的输入文本值。据我所知,这些没有本地规则,所以我必须创建一个自定义规则。不好的是我对正则表达式和javascript的了解很差。我需要编写一个自定义函数来验证文本框输入字段并且不允许非英文字符。允许使用所有其他符号。我想我将能够创建自定义规则,但我需要验证输入字段的正则表达式。任何有关工作示例的帮助将不胜感激。谢谢你!

4

1 回答 1

2

不允许非英文字符

允许使用所有其他符号

似乎与我相矛盾,但我会尽力帮助:)

首先,您应该考虑使用 Ajax 进行验证,因为服务器端语言通常对 Unicode 有更好的支持。如果这不是一个选项,那么首先将带有Unicode 插件的XRegExp库添加到您的页面。

要创建可识别 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}),
    // ...
};

编辑:|从正则表达式中删除。谢谢,@slevthan这本身不是错误,因为\\p{^Letter}已经包含|符号,因此,正则表达式仍然可以工作。然而,这非常具有误导性。

于 2012-05-14T13:58:38.400 回答