Regex表示数字、连字符和加号


Regex for numbers, hyphen and plus +

我正在使用jquery验证引擎,并尝试使用regexp添加自定义验证。

但是如何将其设置为只允许数字、连字符和+号呢?

我尝试了不同的方式,比如:

^[0-9a-zA-Z -+]+$
^[0-9a-zA-Z -'+]+$

但如果我在连字符后面加上加号,它们都不起作用。为什么?

在字符类中,-(连字符)用于指示字符范围(就像0-9表示从09)。你可以逃离它,也可以把它放在最后,让它正常工作:

^[0-9a-zA-Z'-+]+$
^[0-9a-zA-Z+-]+$

编辑:还有,我不确定你在里面放了什么空间。由于您的限制,我删除了它,但如果需要,您可以将其添加回来(在第二个正则表达式的连字符之前)。

连字符创建一个范围(就像您对0-9所做的那样。在您的情况下,它生成一个从空格到+的范围(按ASCII/Unicode顺序)。这是一堆字符:!"#$%&'()*+和空间本身。

转义连字符或将其放在末尾(除非您想接受空格,否则请删除空格):

^[0-9a-zA-Z+-]+$

-在字符类中具有特殊意义。事实上,您甚至在a-zA-Z0-9组中使用它。

要使用文字连字符,可以对其进行转义'-,也可以将其放在类的末尾(就在]之前)

尝试此正则表达式模式

 ^[0-9a-zA-Z+-]+$