正则表达式拒绝连续字符

sha*_*917 5 javascript regex html5

我仍然是Regex的新手,基本上我需要做的是创建一个接受数字和字母但不允许输入连续字符的规则.

例如:abcd - > ok,abbcd - > bad

我有大部分工作,但我无法弄清楚的部分是我如何禁止连续的字符?

我的代码到目前为止:

/^[A-Za-z-0-9]{8,15}$/i
Run Code Online (Sandbox Code Playgroud)

Fel*_*her 4

>>> r = /^((\w)(?!\2))+$/i
>>> r.exec('abbcd')
null
>>> r.exec('abcd')
[ 'abcd',
  'd',
  'd',
  index: 0,
  input: 'abcd' ]
Run Code Online (Sandbox Code Playgroud)

\2部分是向后引用,并匹配该组最后匹配的任何字符(\w)。因此,负向前瞻(?!\2)意味着“后面不跟随字符本身”。如果您不熟悉我在这里使用的某些术语,您应该在MDN 的正则表达式文档中查找它们。

要将接受的字符串长度限制为 OP 中的 8-15 个字符,请将 更改+{8,15}

>>> r = /^((\w)(?!\2)){8,15}$/i
>>> r.exec('abcd')
null
>>> r.exec('abcdabcd')
[ 'abcdabcd',
  'd',
  'd',
  index: 0,
  input: 'abcdabcd' ]
Run Code Online (Sandbox Code Playgroud)