我正在尝试定义一个允许可能有一个下划线的模式,然后它必须有一个或多个来自集合"[\\w_]"
的合法字符(即单词或下划线)。因此"_"
应返回false,但"__"
或"a"
或"\_a"
或"a_"
都应返回true。
我尝试过使用模式
(_)?[\\w_]+
但它在_
上返回true。你知道为什么吗?
答案 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