Javascript RegEx.test始终返回true

时间:2013-07-11 15:03:26

标签: javascript regex

我想创建一个javascript正则表达式来测试一个只接受0到9,a到z,A到Z以及以下字符的字符串的字符串:+ *。总长度在1到10个字符之间。

我这样做了:

var reg = /[0-9A-Za-z\+\*\.]{1,12}/;
if(!reg.test($('#vat_id').val())) {
    return false;
}

但这似乎不起作用。

我在http://www.regular-expressions.info/javascriptexample.html上进行了测试,我可以输入“$ av”并返回“成功匹配”

哪里出错?

编辑:正则表达式现在似乎很好:

var reg = /^[0-9A-Za-z\+\*\.]{1,10}$/;

但为什么我不能让它发挥作用?

请参阅http://jsfiddle.net/R2WZT/

2 个答案:

答案 0 :(得分:7)

如果你没有“锚定”正则表达式来指示匹配应该从测试字符串的开头和结尾开始,那么这意味着你想看看是否可以找到模式字符串中的任何地方

var reg = /^[0-9A-Za-z\+\*\.]{1,12}$/;

开头为^,结尾为$,表示整个字符串必须与模式匹配;也就是说,除了那些有助于匹配的字符串外,字符串中不会出现任何字符。

答案 1 :(得分:1)

您没有将其设置为匹配开头和结尾:

var reg = /^[0-9A-Za-z\+\*\.]{1,10}$/;