2012-09-12 136 views
2

所以我对Regex不是很熟悉,看过一些教程,它是如何工作的,但我仍然不明白!扩展正则表达式字符串

不管怎么说,这里的当前字符串,我有:^[a-zA-Z0-9]*$

我希望它能够使用下列字符:[]()|(并可以使用空格)

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

+0

烨“除了任何^.*()|[]\-的任何字符”,这是完美的。最后一件事(字面意义上,我没有意识到)你应该知道的是,破折号属于字符类的末尾(或开始处),否则他们会指定范围。 –

回答

2

包括在字符类的开头],就像这样:

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

其余的都可以插入转义:

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

除非你不是在谈论当然字符类。

编辑:开口托架可以被解释为括号表达式,所以它可能是更安全的逃离一个:

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

您需要躲避右方括号](只)在字符类中:

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

您需要使用的所有其他字符不需要转义。


顺便说一句,你需要一个字符类中逃脱的唯一字符是:

  • ]右括号(显然)
  • \反斜杠(显然)
  • ^,但只有在不属于否定类(一个以^开头)
  • -,但只有当不是fi字符类中的第一个或最后一个字符

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

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

这意味着

+1

@ acheong87咖啡可能不足? – Bohemian