正则表达式 - 检测两个或多个连续符号

时间:2016-08-01 17:09:30

标签: regex

我有以下正则表达式:

^[A-Z]{2}[0-9A-Z]{1}([0-9A-Z_-]{0,38}[0-9A-Z]{1}){0,1}$

验证:

  • 字符串包含3到42个字符
  • 只能使用字母,数字, - 或_
  • 前两个位置是字母
  • 第三个字符不能是符号(_或 - )
  • 最后一个字符不能是符号(_或 - )

我需要更新正则表达式以检测具有相同连续符号的字符串( - ,__, - 或 - ):

  • RR1_-1(无效)
  • RR1 ___ 1(无效)
  • RR1-1-1(有效)

我结束了:

^[A-Z]{2}[0-9A-Z]{1}([0-9A-Z_-]{0,38}(?!(--|__|-_|_-))[0-9A-Z]{1}){0,1}$

但它不起作用。如何检测两个连续符号?

1 个答案:

答案 0 :(得分:0)

您必须在字符串开头之后插入负前瞻断言,而不是在模式的中间插入。之后,应该假设其余的模式是正确的。