Java的。常用表达。如何与AND混合?

时间:2018-05-29 14:46:51

标签: java regex

我有一个像这样的字符串(VIN):

String vin = "XTC53229R71133923";

我可以使用OR查看是否有字符Q,O,I:

String regExp = ".*[QOI].*";

这很有效。

但是我无法检查这3个字母中是否有任何字母不在字符串中。

这意味着:(不是Q)和(不是O)和(不是我)。 我尝试过负面的预测:

String regExp = "(?!.*[QOI].*)";

这不行。在“XTC5 Q 3229R71133923”中,它返回 true

主要 问题 - 我有两个条件:

  1. 字符串中的字符数(A-Z0-9)应为17。
  2. 字符串不应该有Q,O,I。
  3. 我可以用2个正则表达式检查这个:

    1. String regExp = "^([A-Z0-9]{17})$"; //should be true
    2. String regExp = ".*[QOI].*"; //should be false
    3. 但是有没有办法在一个正则表达式中合并这两个检查

2 个答案:

答案 0 :(得分:3)

如果只使用不包含您不想要的字符的自定义范围呢?

String regexp = "^([A-HJ-NPR-Z0-9]{17})$";

答案 1 :(得分:3)

在这里你^[^QOI]{17}$。使用^启动charcter类意味着“不匹配任何这些字符”。