正则表达式仅包括数字或仅包含字符,或者如果是字母数字则忽略前两个条件

时间:2015-05-11 11:34:44

标签: javascript regex regex-negation regex-lookarounds

我为以下案例编写了正则表达式:

  • 仅限数字(长度:4)

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

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

例如:9987,tyde

如何添加以下条件?

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

1 个答案:

答案 0 :(得分: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

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

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