我想创建一个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}$/;
但为什么我不能让它发挥作用?
答案 0 :(得分:7)
如果你没有“锚定”正则表达式来指示匹配应该从测试字符串的开头和结尾开始,那么这意味着你想看看是否可以找到模式字符串中的任何地方。
var reg = /^[0-9A-Za-z\+\*\.]{1,12}$/;
开头为^
,结尾为$
,表示整个字符串必须与模式匹配;也就是说,除了那些有助于匹配的字符串外,字符串中不会出现任何字符。
答案 1 :(得分:1)
您没有将其设置为匹配开头和结尾:
var reg = /^[0-9A-Za-z\+\*\.]{1,10}$/;