不允许所有相同的字符,即使用一个特殊字符分隔



尝试为以下条件创建正则表达式,我已经尝试了一个正则表达式,它按预期工作,而不是一个条件,因为它不允许重复,甚至由特定的Char &分隔。

  1. 允许Alpha数字字符最小为12,最大为14

  2. 除&(只有一个)

  3. 不允许所有相同的字符,即使用&

  4. 长度在12到14之间是相同的,即使包括&

ex: 11111111111111不允许,因为所有的字符都是相同的

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 characternumerics同时存在

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 &

可以使用

^(?=.{12,14}$)(?!([a-zA-Zd])(?:&?1)+$)[a-zA-Zd]+(?:&[a-zA-Zd]+)?$

查看regex演示

细节:

  • ^-字符串
  • 起始
  • (?=.{12,14}$)-字符串长度必须在12到14个字符之间
  • (?!([a-zA-Zd])(?:&?1)+$)-字符串不能有相同的字母数字字符,最终在任何位置用&字符分隔
  • [a-zA-Zd]+(?:&[a-zA-Zd]+)?-一个或多个字母数字字符后跟一个&字符后跟一个或多个字母数字字符的可选序列
  • $- end of string.

你可以试试这个模式:

/^([A-Z0-9])(?!(1|&)+$)(?=.{11,13}$)[A-Z0-9]*(?:[&][A-Z0-9]+)?$/gm

这是你的模式的修改版本,我只更新了负面前瞻性部分到(?!(1|&)+$)(不允许重复第一个字母或'&'字母)。

看这里的演示

最新更新