2011-05-20 64 views
3

你好,我需要一個有效的正則表達式它可以是任何標識符名稱,以字母或下劃線開頭,但可以包含任意數量的字母,下劃線和/或數字(所有字母可能是上面的或小寫)。 例如,您的正則表達式應該匹配以下文本字符串:「_」,「x2」和「This_is_valid」它不應與這些文本字符串匹配:「2days」或「invalid_variable%」。正則表達式幫助匹配

到目前爲止,這是我想出了,但我不認爲這是正確的

/^[_\w][^\W]+/ 
+2

一個字母是'\ pL'。一個數字是'\ d'。但字母是'\ p {Alphabetic}'。這應該足以讓你走。 – tchrist 2011-05-20 02:02:15

回答

2

下面的工作:

/^[_a-zA-Z]\w*$/ 

始於(^)的一封信(大寫或小寫)或下劃線([_a-zA-Z]),然後是任意數量的字母,數字或下劃線(\w)到最後($

瞭解更多關於Regular Expressions in Perl

1

也許下面的正則表達式:

^[a-zA-Z_]\w*$ 
0

如果確定是在一個字符串的開始,那麼它很容易

/^(_|[a-zA-Z]).*/

如果它嵌入在更長的字符串,我想它沒有太大的壞處,假設它是一個字的開始...

/\s(_|[a-zA-Z]).*/

+3

'。*'會匹配你不想要的東西。 '%','''','#'等 – 2011-05-20 02:01:42