【发布时间】:2013-08-31 21:26:29
【问题描述】:
我正在使用 jquery 验证引擎并尝试使用正则表达式添加自定义验证。
但是如何设置它只允许数字、连字符和+号呢?
我尝试了不同的方式,例如:
^[0-9a-zA-Z -+]+$
^[0-9a-zA-Z -\+]+$
但如果我将加号放在连字符后,它们都不起作用。为什么?
【问题讨论】:
我正在使用 jquery 验证引擎并尝试使用正则表达式添加自定义验证。
但是如何设置它只允许数字、连字符和+号呢?
我尝试了不同的方式,例如:
^[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+-]+$
【讨论】:
A-Z 是)。 c) 模式中有两个空格(我认为 OP 甚至不想要其中的空格)。 d)字符类包含从空格到下划线的范围,其中包括almost every other printable ASCII character e)(请在您的模式中包含解释)[meta.stackexchange.com/questions/177757/…)