我正在针对满足以下要求的字符串构建正则表达式:
- 该字符串最多包含 5 组字母数字字符。
- 字符串中的每个集合都由单个空格字符分隔。
例如,我们可以有“asa22d asdcac3”或“Asdcd234 sacasW2 sas1 s sd1”(希望你能看懂)。到目前为止,我有:
^[A-z 0-9]\s{0,1}
我没有使用\w
,因为它允许下划线。这适用于一组字符,但我需要允许五组由空格分隔的相同类型的字符串。
我怎样才能做到这一点?
我正在针对满足以下要求的字符串构建正则表达式:
例如,我们可以有“asa22d asdcac3”或“Asdcd234 sacasW2 sas1 s sd1”(希望你能看懂)。到目前为止,我有:
^[A-z 0-9]\s{0,1}
我没有使用\w
,因为它允许下划线。这适用于一组字符,但我需要允许五组由空格分隔的相同类型的字符串。
我怎样才能做到这一点?
你还没有说你使用的是什么语言,但这应该为你做:
^[A-Za-z0-9]+(\s[A-Za-z0-9]+){0,4}$
一个单词,后跟最多四个 space-then-word 实例。
要匹配正则表达式中模式的多个实例,您可以使用正则表达式引擎允许的匹配组、反向引用和区间表达式的任意组合。
根据您的示例代码,您的正则表达式引擎显然支持间隔,因此请使用它。这里有两个可以实现目标的例子。
# Use POSIX character classes with an interval expression
^([[:alnum:]]+[[:space:]]?){1,5}$
# PCRE expression with intervals
\A(\p{Xan}+\s?){1,5}\Z