我正在使用jquery验证引擎,并尝试使用regexp添加自定义验证。
但是如何将其设置为只允许数字、连字符和+号呢?
我尝试了不同的方式,比如:
^[0-9a-zA-Z -+]+$
^[0-9a-zA-Z -'+]+$
但如果我在连字符后面加上加号,它们都不起作用。为什么?
在字符类中,-
(连字符)用于指示字符范围(就像0-9
表示从0
到9
)。你可以逃离它,也可以把它放在最后,让它正常工作:
^[0-9a-zA-Z'-+]+$
^[0-9a-zA-Z+-]+$
编辑:还有,我不确定你在里面放了什么空间。由于您的限制,我删除了它,但如果需要,您可以将其添加回来(在第二个正则表达式的连字符之前)。
连字符创建一个范围(就像您对0-9
所做的那样。在您的情况下,它生成一个从空格到+
的范围(按ASCII/Unicode顺序)。这是一堆字符:!"#$%&'()*+
和空间本身。
转义连字符或将其放在末尾(除非您想接受空格,否则请删除空格):
^[0-9a-zA-Z+-]+$
-
在字符类中具有特殊意义。事实上,您甚至在a-z
、A-Z
和0-9
组中使用它。
要使用文字连字符,可以对其进行转义'-
,也可以将其放在类的末尾(就在]
之前)
尝试此正则表达式模式
^[0-9a-zA-Z+-]+$