【问题标题】:Regular Expression : At least one letter, At least one number, Certain length And Does not include正则表达式:至少一个字母,至少一个数字,一定长度且不包括
【发布时间】:2017-05-10 01:30:30
【问题描述】:

我在 Groovy 中使用正则表达式。

我正在尝试用以下规则制定正则表达式。

  1. 必须正好是 17 个字符
  2. 只能包含字母和数字
  3. 必须至少包含 1 个字母和 1 个数字字符
  4. 不能包含字母“I”、“O”或“Q”(大写或小写)

通过下面的表达,我想我快到了。下面的正则表达式似乎可以满足要求 1,2 和 3。

 def pttrnVin = /^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+){17}$/

我尝试添加要求 4,但没有成功。有人可以帮我吗?

谢谢

【问题讨论】:

  • a-z 更改为 a-hj-npr-z (使用不区分大小写的标志,不必以大写形式重复) 并删除 + 量词和捕获组没用的。

标签: regex groovy


【解决方案1】:
  1. 必须正好是 17 个字符。 (下文处理)
  2. 只能包含字母和数字。 (下文处理)
  3. 必须至少包含 1 个字母和 1 个数字字符。 (?=.*[0-9])(?=[a-z])
  4. 不能包含字母“I”、“O”或“Q”(大写或小写)([a-hj-npr-z0-9]{17})

所以:

/^(?=.*[0-9])(?=.*[a-zA-Z])([a-hj-npr-z0-9]{17})$/i

Demo

【讨论】:

  • 这似乎不太奏效。例如,我将您的测试更改为使用“1234QDeEfFgGhHiII”和 1234qDeEfFgGhHiII,它仍然匹配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
相关资源
最近更新 更多