输入值与正则表达式不匹配

var reg=new RegExp("^[^\w\u4e00-\u9fa5]{2,4}$");
alert(reg.test(nvalue));
当输入的为“张三” 时,alert显示的值是false 为什么匹配不上?

[^\w\u4e00-\u9fa5],去掉[里面的^,你加^就是排除这些字符了


    var reg = new RegExp("^[\w\u4e00-\u9fa5]{2,4}$");
    alert(reg.test("张三"));
 alert(/^[\w\u4e00-\u9fa5]{2,4}$/.test('张三'));

我匹配两2到4个汉字的正则表达式应该怎么写呢

var reg = /^[\u4e00-\u9fa5]{2,4}$/;

是正解

如果你需要也可以匹配字符的话,可以用以下

var reg = /^[\w\u4e00-\u9fa5]{2,4}$/

如果你要匹配的话,那么正则里就不要加 ^$ ,对应的正则应该是 /[\w\u4e00-\u9fa5]{2,4}/

反之验证的话,是 /^[\w\u4e00-\u9fa5]{2,4}$/

如果你要匹配2到4个汉字的话,那么正则里就不要加 ^$ ,对应的正则应该是 /[\u4e00-\u9fa5]{2,4}/

反之验证的话,是 /^[\u4e00-\u9fa5]{2,4}$/

多加了一个^,它变成反的含义了