在asp.net mvc 4中使用数据注释验证其他语言的文本

本文关键字:验证 注释 其他 语言 文本 数据 net asp mvc | 更新日期: 2023-09-27 18:05:40

我在asp.net mvc 4中使用数据注释来验证我的用户名文本框如下:

[Required()]
[RegularExpression("^[a-zA-Z]{4,15}$")]
public string USER_NAME { get; set; }

User可以输入任意用户名,最小长度为4,最大长度为15。用户也可以输入任何语言的用户名。当我输入英文文本时,这可以正常工作,但当我在该字段中输入或复制粘贴文本时,使用其他语言,如阿拉伯语或其他语言,它不会验证它,所以如何进行此验证。

在asp.net mvc 4中使用数据注释验证其他语言的文本

这个概念似乎可以工作,并且在我这端测试成功,在下面的代码中有两个文本框,在onchange事件期间,我们调用两个不同的函数CheckEnglishOnly和CheckArabicOnly,它们检索字符串并检查字符串中的每个字符。charCodeAt函数用于获取字符的十进制值,对于英语,它检查值在0到255之间,对于阿拉伯语,它检查字符值在1536到1791之间,根据这个网站http://www.alanwood.net/unicode/arabic-supplement.html似乎是阿拉伯字符的范围。不符合条件的字符将被丢弃,并在末尾更新文本字段值。

您可能还会在http://www.unicode.org/charts/PDF/U0600.pdf上找到阿拉伯语的Unicode图表。

我已经在IE和FF中成功测试了代码。我希望这对你有用!

 <script type="text/javascript">
function CheckEnglishOnly(field)
{
    var sNewVal = "";
    var sFieldVal = field.value;
    for(var i = 0; i < sFieldVal.length; i++) {
        var ch = sFieldVal.charAt(i);
        var c = ch.charCodeAt(0);
        if(c < 0 || c > 255) {
            // Discard
        }
        else {
            sNewVal += ch;
        }
    }
    field.value = sNewVal;
}
function CheckArabicOnly(field)
{     
    var sNewVal = "";
    var sFieldVal = field.value;
    for(var i = 0; i < sFieldVal.length; i++) {
        var ch = sFieldVal.charAt(i);;
        var c = ch.charCodeAt(0);
        if(c < 1536 || c > 1791) {
            // Discard
        }
        else {
            sNewVal += ch;
        }
    }
    field.value = sNewVal;
}
</script>

然后在html body标签中:

English Only (onchange): <input type="text" id="txtEnglish" onchange="CheckEnglishOnly(this);" />
Arabic Only (onchange): <input type="text" id="txtArabic" onchange="CheckArabicOnly(this);" />