2011-05-20 47 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