尝试为以下条件创建正则表达式,我已经尝试了一个正则表达式,它的工作预期以外的一个条件,因为它不允许重复,甚至由特定的字符分隔。
1.允许字母数字字符,最小12,最大14
1.除&之外不允许有任何特殊字符(只能有一个)
1.不允许所有相同的字符,即使用&分隔
1.长度在12到14之间相同,甚至包括&
例如:11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111&11111 not allowed as all are the same characters even & is there
111111111112 allowed
1111111&11112 allowed
ABC123567GHDG4 allowed
^(\d)(?!\1+$)(?=.{11,13}$)[0-9]*(?:[&][0-9]+)?$
上面的正则表达式除了1111111&11111以外都可以工作
我也试了下面的正则表达式,它的工作条件,因为它不允许相同的字符
但它允许字符串的开头和结尾,而不允许字母
^(?!&?(\d)(?:&?\1)+$)(?=.{12,14}$)\d*(?:&\d*)?$
我们不允许"&"
出现在字符串的开头和结尾,它需要允许Captial Alpha character
和numerics
。
ABC123567GHDG4 allowed
ABC1235&67GHD allowed
ABCDEFGHIJKLR allowed
1254789563254 allowed
125478&563254 allowed
125478556325& not allowed as ends with &
&125478556325 not allowed as starts with &
ABCDEFGHIJKL& not allowed as ends with &
&ABCDEFGHIJKL not allowed as start with &
2条答案
按热度按时间w8ntj3qf1#
你可以用
参见regex demo
^
-字符串的开头(?=.{12,14}$)
-字符串的长度必须在12到14个字符之间(?!([a-zA-Z\d])(?:&?\1)+$)
-字符串不能有相同的字母数字字符,最终在任何位置用&
字符分隔[a-zA-Z\d]+(?:&[a-zA-Z\d]+)?
-一个或多个字母数字字符,后跟一个&
字符的可选序列,后跟一个或多个字母数字字符$
-字符串结束。9udxz4iz2#
你可以试试这个模式:
这是你的模式的修改版本,我只更新了负前瞻部分为
(?!(\1|&)+$)
(不允许第一个字母或'&'字母重复)。参见演示here