简单的正则expression式与重复无序的匹配
我有这个正则expression式
/^[az]{1,}( (?=[az])){0,}(_(?=[az])){0,}[az]{0,}$/
我想匹配
ag_b_cf_ajk
要么
zva bc de
要么
hh_b opxop a_b
所以任何由单个空格或下划线分隔的字符标记。
(在上面的正则expression式中,我们有一个文字空间,这是合法的,我们有前瞻,确保空格或下划线后面跟着一个字符)。
问题是,我上面的正则expression式只匹配第一个空格或下划线,如下所示:
axz_be axz be
但是这些失败
axz_be_j axz be j
我相信我错过了正则expression式的一些概念,以解决这个问题,因为我一直在尝试过去的几个小时!
看来你可以使用
^[az]+(?:[_ ][az]+)*$
看正则expression式演示
正则expression式匹配
-
^
– string的开始 -
[az]+
– 一个或多个小写ASCII字母 -
(?:[_ ][az]+)*
– 零个或多个序列:-
[_ ]
– 空格或下划线 -
[az]+
– 一个或多个小写ASCII字母
-
-
$
– string的结尾
如果空格或下划线至less出现一次,请使用+
量词而不是*
:
^[az]+(?:[_ ][az]+)+$ ^
要为下划线和连字符添加多字符替代,您需要引入另一个非捕获组:
^[az]+(?:(?:[_ ]|\[])[az]+)+$
看另一个正则expression式演示