Javascript 重复无序匹配的简单正则表达式
我有这个正则表达式Javascript 重复无序匹配的简单正则表达式,javascript,regex,node.js,Javascript,Regex,Node.js,我有这个正则表达式 /^[a-z]{1,}( (?=[a-z])){0,}(_(?=[a-z])){0,}[a-z]{0,}$/ 我想比赛 ag_b_cf_ajk 或 或 因此,任何由单个空格或下划线分隔的字符标记 (在上面的正则表达式中,我们有一个文字空格,这是合法的,我们有一个look aheads,确保空格或下划线后跟一个字符) 问题是,我上面的正则表达式只匹配第一个空格或下划线,如下所示: axz_be axz be 但这些都失败了 axz_be_j axz be j 为了解决这
/^[a-z]{1,}( (?=[a-z])){0,}(_(?=[a-z])){0,}[a-z]{0,}$/
我想比赛
ag_b_cf_ajk
或
或
因此,任何由单个空格或下划线分隔的字符标记
(在上面的正则表达式中,我们有一个文字空格,这是合法的,我们有一个look aheads,确保空格或下划线后跟一个字符)
问题是,我上面的正则表达式只匹配第一个空格或下划线,如下所示:
axz_be
axz be
但这些都失败了
axz_be_j
axz be j
为了解决这个问题,我相信我错过了一些正则表达式的概念,因为我已经尝试了几个小时了 看来你可以用
^[a-z]+(?:[_ ][a-z]+)*$
见
正则表达式匹配
-字符串的开头^
-一个或多个小写ASCII字母[a-z]+
-零个或多个以下序列:(?:[[a-z]+)*
-空格或下划线[\u]
-一个或多个小写ASCII字母[a-z]+
-字符串结尾$
+
量词而不是*
:
^[a-z]+(?:[_ ][a-z]+)+$
^
要将多字符替换为下划线和连字符,需要引入另一个非捕获组:
^[a-z]+(?:(?:[_ ]|\[])[a-z]+)+$
请参见关于
^([a-z][]?)+$
?该(?:…)
是一个非捕获组,仅用于对某些子模式进行分组,但不将捕获的文本存储在任何内存缓冲区中。谢谢,如果我想包括[]以及空格和下划线,该怎么办?我的问题是[]是两个字符而不是一个,我不知道如何在“or”语句中放置两个字符,其中空格和下划线并排。我在答案的底部添加了该示例。谢谢!我想你忘了转义字符“[]”变成“[]”了吧?我没有忘记,如果是JS,你不需要转义]
,它不是字符类的一部分。
^[a-z]+(?:[_ ][a-z]+)+$
^
^[a-z]+(?:(?:[_ ]|\[])[a-z]+)+$