JQuery-匹配()中的下划线

JQuery-匹配()中的下划线,jquery,regex,Jquery,Regex,我有一个只匹配字母的输入,但由于某些原因,下划线也算作ok符号 $(document).ready(function() { $('#first_name').bind('input', function() { if (!$(this).val().match("^[A-zА-я^_]{3,}$")) { $('#first_name').css('background-color', 'rgb(250,171,192)'

我有一个只匹配字母的输入,但由于某些原因,下划线也算作ok符号

$(document).ready(function() {
        $('#first_name').bind('input', function() {
            if (!$(this).val().match("^[A-zА-я^_]{3,}$")) {
                $('#first_name').css('background-color', 'rgb(250,171,192)');
                $('#first_name').css('border-color', 'rgb(180,86,109)');
            }
            else {
                $('#first_name').css('background-color', 'rgb(193,256,159)');
                $('#first_name').css('border-color', 'rgb(31,122,23)');
            }
        });
    });

<input type="text" id="first_name" />
$(文档).ready(函数(){
$('#first_name').bind('input',function(){
if(!$(this.val().match(“^[A-zА-Ø^{3,}$”){
$('first_name').css('background-color','rgb(250171192)');
$('first#u name').css('border-color','rgb(180,86109)');
}
否则{
$('first_name').css('background-color','rgb(193256159)');
$('first#u name').css('border-color','rgb(31122,23)');
}
});
});

我后来添加了“^uu”条件,但不管有没有它,效果都是一样的。

问题在于
А-Ø
部分。也就是说,您可以将任何字符从
A
Ø
的任意位置<代码>\uu和许多其他字符出现在该范围内<代码>A是<代码>是。所以
A-а
的意思是“从U+0041到U+044F的任何东西。”
\uu
是,所以它在这个范围内。
\
()和其他几百个也是如此

要解决这个问题,您需要在该字符类中单独列出有效字符的范围,因为
А-呫
太宽了。我不太了解您使用的字母表,不知道哪些范围是有效的,但例如,您可以从
A-Za-z
(如果所有英文字符都有效)开始,然后为其他有效字符添加其他范围


我后来添加了“^u3;”条件,但不管有没有它,效果都是一样的


如果你的意思是在上面添加了
^
,试图说“但不是
^
”,那么现在字符类就是这样工作的。它们要么是积极的,要么是消极的。如果是负数,
^
必须出现在
[]
中的第一个位置。将
^ 
添加到类末尾只会将这两个字符添加到您愿意接受的字符列表中。

A-z
包括ASCII 65到122,其中包括下划线(ASCII 95):)

使用
A-Za-z


А-а
再次执行相同的操作(范围更大)。因此,您需要更具体地说明要包含的字符子集。

我刚刚意识到反斜杠也有同样的作用。