扩展正则表达式字符串

时间:2012-09-12 23:58:00

标签: regex

所以我对Regex不是很熟悉,看过一些教程以及它是如何工作的,但我仍然没有得到它!

无论如何,这是我当前的字符串:^[a-zA-Z0-9]*$

我希望它能够使用以下字符:[ ] ( ) |(并且能够使用空格)< / p>

编辑:对于空格,我们可以说以下字符串:[Something] Something,是否可以使用正则表达式:^[][a-zA-Z0-9 ]*$

2 个答案:

答案 0 :(得分:3)

您需要在字符类中转义结束方括号](仅限):

^[[\]a-zA-Z0-9 ()|]*$

您需要使用的所有其他角色都不需要转义。


另外,在字符类中需要转义的唯一字符是:

  • ]结束括号(显然)
  • \反斜杠(显然)
  • ^,但仅限于不在负面课程中(以^开头)
  • -,但前提是不是字符类中的第一个或最后一个字符

在角色类中使用时,所有其他角色都会失去正则表达式的含义。例如,这是一个有效的字符类:

[^^.*()|[\]\\-]

表示“除^.*()|[]\-之外的任何字符”

答案 1 :(得分:2)

在字符类的开头包含],如下所示:

^[]a-zA-Z0-9]*$

其余的可以插入未转义:

^[][()|a-zA-Z0-9]*$

除非你当然不是在谈论角色类别。

编辑:左括号可以被解释为括号表达式,因此可以更安全地逃避那个:

^[]\[()|a-zA-Z0-9]*$