【问题标题】:Regex Reject Consecutive Characters正则表达式拒绝连续字符
【发布时间】:2012-04-25 07:44:00
【问题描述】:

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

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

我有大部分工作要做,但我想不通的部分是如何禁止连续字符?

到目前为止我的代码:

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

【问题讨论】:

  • 起初我认为z和0之间的减号是下划线,如果是这样你最好使用[\w]而不是[A-Za-z_0-9]

标签: javascript regex html


【解决方案1】:
>>> 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' ]

【讨论】:

  • 这个答案的问题是它删除了我的限制规则,即用户必须输入至少 8 个字符但不超过 16 个。
  • @shade917:您可以将+ 符号更改为{8,15}(来自您的问题)以实现这一目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
相关资源
最近更新 更多