正则表达式包含字母,数字和_
我试图创建一个正则表达式匹配的字母数字字符和下划线_
。这是我的正则表达式:"\w_*[^-$\s\]"
,我的感觉是,这个正则表达式是指任何字母数字字符\w
,下划线_
,并没有-
,$
,或空白。它是否正确?正则表达式包含字母,数字和_
正则表达式理解为这实际上在字符串中的字符匹配的模式,从左到右,所以你的模式实际上是相匹配的字母,那么下划线(0或以上) ,那么至少有一个字符不是连字符,美元或空格。
既然你想上的字符类型交替,只使用一个字符类,以显示你允许哪些字符:
[\w_]
这就验证字符串的任何部分匹配它,让我们锚它开始和到字符串:
^[\w_]$
现在我们看到这个字符类缺少一个量词,所以我们完全匹配上一个字符。我们可以修复使用+
(如果你想要一个或多个字符,没有空字符串)或*
(如果你想允许空字符串)。我会在这里使用+
。
^[\w_]+$
事实证明,在\w
字符类已经包含了下划线,所以我们可以从模式中删除多余的下划线:
^[\w]+$
现在我们必须在字符类只有一个字符,所以我们不再需要的字符类括号都:
^\w+$
这就是你所需要的,除非我失去了一些关于你的要求。
这个回答假设我们要验证*整个字符串*正则表达式。如果要检查字符串中是否存在至少一个字母数字/下划线,请使用@ hwnd的答案(http://stackoverflow.com/a/26442555/129655)。 – 2014-10-18 17:30:13
是,如果右括号没有转义并且您编辑了正则表达式,则您是半正确的。此外,令牌\w
匹配下划线,因此您不需要重复此字符。正则表达式说:
\w # word characters (a-z, A-Z, 0-9, _)
_* # '_' (0 or more times)
[^-$\s] # any character except: '-', '$', whitespace (\n, \r, \t, \f, and " ")
你可以简单地写你的整个正则表达式如下匹配单词字符:
\w+ # word characters (a-z, A-Z, 0-9, _) (1 or more times)
如果你想匹配整个字符串,一定要锚你的表达。
^\w+$
说明:
^ # the beginning of the string
\w+ # word characters (a-z, A-Z, 0-9, _) (1 or more times)
$ # before an optional \n, and the end of the string
'\ w'还涵盖了'_'符号。 – 2014-10-18 17:24:27
是的,你不应该逃避']' – thefourtheye 2014-10-18 17:24:54