我有正则表达式,应该与以下内容匹配
没有前导或尾随空格
{A-Z0-0}
单词之间最多只能有1个空格
包括空格在内的总数为35个字符
例如
(no space)ABC 123 450(no space) <-- Pass
(space)ABC 123 450(no space) <--Fail
(no space)ABC(space)(space)EFG(no space) <--Fail
我尝试过
^\S{0,35}(?: \S+){0,35}$
,但我仍然无法摆脱领先地位
谢谢
答案 0 :(得分:0)
尝试以下模式:
^(?!.*[ ]{2,})(?:\S[A-Z0-9 ]{0,33}\S)?$
作为一种解释,(?!.*[ ]{2,})
项是一个否定的超前行为,它断言输入 not 在任何地方都不包含两个或更多个连续空格。然后,(?:\S[A-Z0-9 ]{0,34})?
项匹配一个非空格字符,后跟0到33个鞋面或数字,再跟另一个非空格。这涵盖单个字符或更多字符。为了解决输入匹配为空的情况,我们使用?
将整个术语设为可选。
答案 1 :(得分:0)
假设您具有足够强大的正则表达式引擎,请使用零宽度预读来检查总长度(此处使用\w
作为[0-9a-zA-Z]
的代理,尽管这样可以使此处更易于阅读包括一些不需要的字符):
^(?=.{1,35}$)((\w+ )*?\w+$)
说明
^ Match the start
(?=.{1,35}$) At this point, there are between 1 and 35 characters before the end
(\w+ )*? Match zero or more (preferring less) repetitions of
one or more alphanumerics followed by a single space
\w+ Match one or more alphanumerics
$ End of the string