5

我对 Regex 还是很陌生,基本上我需要做的是创建一个接受数字和字母但不允许输入连续字符的规则。

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

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

到目前为止我的代码:

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

1 回答 1

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

\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' ]
于 2012-04-25T08:05:33.457 回答