正则表达式可能有一个下划线,然后至少有一个合法字符

时间:2017-06-10 10:21:57

标签: java regex

我正在尝试定义一个允许可能有一个下划线的模式,然后它必须有一个或多个来自集合"[\\w_]"的合法字符(即单词或下划线)。因此"_"应返回false,但"__""a""\_a""a_"都应返回true。 我尝试过使用模式

(_)?[\\w_]+

但它在_上返回true。你知道为什么吗?

3 个答案:

答案 0 :(得分:1)

您可以在正则表达式中使用前瞻断言:

_(?=\w)

注意\w已包含下划线,因为它包含以下字符集[a-zA-Z0-9_]

答案 1 :(得分:1)

\w已包含下划线字符,您所要做的就是确保如果子字符串以下划线开头,则还有另一个单词字符:

_\\w+|[^\\W_]\\w*

或者不通过交替启动模式,你可以这样做:

\\w(?:(?<=_)\\w+|(?<!_)\\w*)

答案 2 :(得分:1)

您可以使用此正则表达式[a-zA-Z]{1,}|[a-zA-Z_\/]{2,}

输入

   "_"      -> false
   "__"     -> true 
   "a"      -> true
   "_a"     -> true
   "a_"     -> true

regex demon