正则表达式拒绝连续字符

时间:2012-04-25 07:44:00

标签: javascript regex html5

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

例如:abcd - >好的,abbcd - >坏

我的大部分内容都可以使用,但我无法弄清楚的部分是如何禁止连续的字符?

我的代码到目前为止:

/^[A-Za-z-0-9]{8,15}$/i

1 个答案:

答案 0 :(得分:4)

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

\2部分是后引用,并且匹配组(\w)最后匹配的任何字符。因此,负向前瞻(?!\2)意味着“没有跟随角色本身。”如果我对您使用的某些术语不熟悉,您应该在MDN's Regular Expression Documentation上查找。

要将接受字符串的长度限制为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' ]