正则表达式为数字,连字符和加+

时间:2013-08-28 17:08:46

标签: php jquery regex

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

但是如何将其设置为仅允许数字,连字符和+符号?

我尝试过不同的方式,如:

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

但如果我在连字符后加上加号,它们都没有用。为什么呢?

4 个答案:

答案 0 :(得分:3)

在字符类中,-(连字符)用于表示字符范围(就像0-9表示从09)。您可以将其转义,或将其放在最后以使其正常工作:

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

^[0-9a-zA-Z+-]+$
编辑:另外,我不确定你把空间放在那里。我因为你的限制而将其删除了,但如果需要,你可以将其添加回来(在第二个正则表达式的连字符之前)。

答案 1 :(得分:1)

连字符创建一个范围(就像你使用0-9一样。在你的情况下,它会生成一个从空格到+的范围(以ASCII / Unicode顺序)。这是很多字符: !"#$%&'()*+和空间本身。

转义连字符或将其放在最后(除非你想要接受空格,否则删除空格):

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

答案 2 :(得分:1)

-在角色类中具有特殊含义。事实上,您甚至在a-zA-Z0-9群组中使用它。

要使用文字连字符,请将其转义\-或将其放在课程结尾(]之前)

答案 3 :(得分:0)

试试这个正则表达式

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