2012-03-02 230 views
0

我有这样的正则表达式的jQuery:正则表达式的字母,数字和字符的jQuery

var regx = /^[\w ._-]+$/; 

if($($input).val().match(regx)) { 
           alert('it works fine'); 
           } 
else 
    { 
    alert('it does not works fine'); 
    return false 
    e.preventDefault(); 
    } 

为什么,如果我在输入某事写这样EJ:

Mary-Michael 

我得到与警报不工作正常,但如果我写:

Mary.Michael or Mary_Michael 

我得到它工作正常

我想补充- 连字符到正则表达式。谢谢

+3

似乎为我工作:http://jsfiddle.net/wv4qy/。错误必须在您未显示给我们的部分。或者你没有正确测试它。 – 2012-03-02 16:02:09

+0

@FelixKling有可能不同的JS引擎以不同的方式处理正则表达式? – Blazemonger 2012-03-02 16:05:12

+0

你是对的我在其他部分的代码错误。谢谢! – hyperrjas 2012-03-02 16:05:43

回答

1

连字符在正则表达式(如[0-9])具有特殊的意义,所以你应该逃避它。对于这个问题,你也应该逃脱这段时间:

var regx = /^[\w \._\-]+$/; 
+0

谢谢你也工作得很好。该错误在其他代码中。谢谢!! – hyperrjas 2012-03-02 16:06:11

+0

内部的字符类只有'^'和'-'具有特殊的含义,并且只有在特定的位置。这是'^'类的开始,'-'的两个字符之间(表示一个范围)。这里的正则表达式是绝对正确的,没有必要逃避这些字符。 – 2012-03-02 16:07:54

+0

内部字符类你做*不*有逃跑的周期,你没有逃避连字符时,它后面紧跟']' – 2012-03-02 16:13:38

相关问题