用于使用 KNOCKOUTJS 验证输入文本框中非英语字符的自定义规则

Custom rule for validating an input text box for non english characters using knockoutjs

本文关键字:英语 字符 规则 自定义 KNOCKOUTJS 验证 文本 输入 用于      更新时间:2023-09-26

我正在使用MVC 3和knockoutjs库开发应用程序。我也在重新配置挖空验证插件。我需要验证允许的符号的输入文本值。据我所知,这些没有本机规则,因此我必须创建一个自定义规则。不好的是我在正则表达式和javascript方面的知识非常差。我需要编写一个自定义函数来验证文本框输入字段并且不允许使用非英文字符。允许使用所有其他符号。我想我将能够创建自定义规则,但我需要验证输入字段的正则表达式。任何对工作示例的帮助将不胜感激。谢谢!

不允许使用非英文字符

允许使用所有其他符号

对我来说似乎自相矛盾,但我会尽力帮助:)

首先,您应该考虑使用 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}),
    // ...
};

编辑:从正则表达式中删除|。谢谢,@slevithan。这本身并不是一个错误,因为''p{^Letter}已经包含了|符号,因此,正则表达式仍然有效。然而,这很有误导性。