【问题标题】:Regular expression to include numeric only or character only or ignore first two conditions if alpha numeric正则表达式仅包含数字或仅包含字符,或者如果是字母数字则忽略前两个条件
【发布时间】:2015-07-21 21:28:24
【问题描述】:

我为以下情况编写了正则表达式:

  • 只有数字(长度:4)

  • 只有字母(应该包含元音)

([0-9]{1,4})|((?=[a-z]*[aeiou])[a-z]*)

例如:9987,泰德

如何添加以下条件?

  • 如果字符串包含字母数字,则忽略前两种情况 人物。 例如:9ty87

【问题讨论】:

  • 请添加一些示例。 “包含字母数字字符”的字符串应该两者都匹配。
  • only characters(should contain vowel) 实际上是两个条件。
  • 前两个包含在最后一个条件中,因此在这种情况下,无论如何指定这些都没有多大意义。
  • @CommuSoft:我觉得没那么简单。我认为最后一个条件的意思是“只有字母和数字,但至少有一个字母和一个数字”(~字母数字)和第一个条件:“只有数字,但小于 5”

标签: javascript regex regex-negation regex-lookarounds


【解决方案1】:

如果我能很好地解读您的问题,我认为您正在寻找:

  • 只有数字且介于 1 到 4 个字符之间的字符串
  • 只有字母且至少有一个元音的字符串
  • 只有字母和数字的字符串,至少有一个字母和一个数字。

模式:

/^(?:[0-9]{1,4}|[bcdfghj-np-tv-z]*[aeiou][a-z]*|[a-z]+[0-9][a-z0-9]*|[0-9]+[a-z][a-z0-9]*)$/i

或更多分解

/^(?:[0-9]{1,4}(?:[0-9]*[a-z][a-z0-9]*)?|[bcdfghj-np-tv-z]*(?:[aeiou][a-z]*|[a-z]+[0-9][a-z0-9]*))$/i

这是一个简单的替换(我认为您不需要更复杂的东西)。所以只有一个分支会成功。

请注意,锚点 ^$ 对于此类任务至关重要,以确保考虑到整个字符串。

【讨论】:

  • 但这没什么用,因为前两个案例包含在最后一个案例中。换句话说,可以放弃前两个...
  • 我认为另一个问题是数字字符可能位于字母字符之前。这个正则表达式是否涵盖了这种情况?
  • @CommuSoft:当然。 (第一个模式中的最后一个替代方案,最后一个模式中的第一个替代方案)
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 2021-12-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多