我需要一个具有以下约束的正则表达式:
仅包含[A-Z0-9.*]
个字符
长度为1到15个字符
必须包含*
,但只能包含一次。
因此,以下断言:
我的目标是只有一个表达式。我显然可以有一个表达式断言前两个约束:[A-Z0-9.*]{1,15}
然后第二个表达式断言第三个约束\*{1}
。
是否可以使用一个表达式来实质上验证字符串输入的整体结构,然后用另一个表达式重新排列并重新计算字符串?
答案 0 :(得分:6)
使用前瞻,您可以使用此正则表达式:
^(?=.{1,15}$)[A-Z0-9.]*\*[A-Z0-9.]*$
RegEx分手:
^
:开始(?=.{1,15}$)
:肯定要断言输入中有1到15个字符[A-Z0-9.]*
:匹配零个或多个[A-Z0-9.]
个字符\*
:按字面顺序匹配星号[A-Z0-9.]*
:匹配零个或多个[A-Z0-9.]
个字符$
:结束