2012-03-10 96 views
0

试图为此获取正确的正则表达式 - 只有字母,空格,逗号和逗号。到目前为止,这仅适用于仅输入1个字符的情况。还有,然后返回false。任何人都可以帮忙?Jquery/Javascript正则表达式

$('#submit').click(function() { 
    var locationtest = /[^a-zA-Z \-\.\,]/; 
    if (!locationtest.test($('#location').val())) { 
     alert('Nope, try again!'); 
     $('#location').val('') 
     return false; 
    } else { 
     alert('You got it!'); 
    } 

});` 
+0

你的表达是正确的。看到答案。 – Qtax 2012-03-10 02:58:41

回答

1

这应该这样做,这1个或多个字符匹配您所描述

/^[a-zA-Z \-\,]+$/ 

我拿出\.内部设置,你的描述说,字母,空格,连字符,逗号

+0

糟糕,复制并粘贴\ \。从PHP preg_match – Go3Team 2012-03-10 02:47:21

0

你很近,你只需要指定你希望角色出现的次数。以下代码将指定0次或更多次 var locationtest =/[^ a-zA-Z - 。\,] * /;

并且此代码将指定一次或多次 var locationtest =/[^ a-zA-Z - 。\,] + /;

*和+字符的重要性。

0

添加一个量词+和全局标志/g

var locationtest = /[^a-zA-Z \-\.\,]+/g; 
+0

这仍然踢回了错误。 – Go3Team 2012-03-10 02:56:36

0

你的表达是正确的,你只需要反转匹配的结果。如果字符串包含任何字符是

/[^a-zA-Z \-\.\,]/ 

将匹配不你想要的(在字符类中的领先^)。

即删除!

var locationtest = /[^a-zA-Z \-\.\,]/; 
if (locationtest.test($('#location').val())) { 
    alert('Nope, try again!'); 
    $('#location').val('') 
    return false; 
} else { 
    alert('You got it!'); 
} 

注意,空字符串将通过为有效,如果你不希望出现这种情况,你可以使用它代替:

/[^a-zA-Z \-\.\,]|^$/