1

我想创建一个 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/

4

2 回答 2

7

如果您没有“锚定”正则表达式以指示匹配项应该从测试字符串的开头开始并在测试字符串的结尾结束,那么这意味着您想查看是否可以在测试字符串中的任何位置找到该模式细绳。

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

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

于 2013-07-11T15:06:07.713 回答
1

您没有将其设置为匹配开始和结束:

var reg = /^[0-9A-Za-z\+\*\.]{1,10}$/;
于 2013-07-11T15:06:12.570 回答