2012-09-12 180 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