在RegEx

时间:2018-04-18 19:50:11

标签: java regex

我需要帮助创建一个regEx来检查输入是

  1. 17个字符
  2. 可能不包含特殊字符或空格
  3. 可能不包含I,O或Q
  4. 只允许使用大写字母。
  5. 对于第一个,17个字符的部分,我已经使用if(str.length() == 17)解决了它(根据硬件要求),并且我有点理解如何排除字符部分。这是我到目前为止所拥有的

    String regEx = "\\S^[I,O,Q][A-Z]"

    但这不起作用。我有点难过如何让它发挥作用。我知道\\S意味着它不能包含任何空格。 ^表示它应该排除I,O,Q(或者我认为它应该,不确定),然后[A-Z]意味着它应该都是大写字母。

    任何人都可以帮我弄清楚如何正确地为此制作regEx吗?

    附注,我已经查看了有关删除特殊字符的其他regEx问题,但它只排除了一些$<>@&,如何排除所有这些问题?

    由于

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

[A-HJ-NPR-Z]{17}

我创建了一个长度为17的随机单词列表,因此你可以看到这个正则表达式:

https://regex101.com/r/w7zMEY/1

尝试自己添加更多随机单词

  

附注,我已经查看了有关删除的其他regEx问题   特殊字符,但它只排除了几个$&lt;&gt; @&amp ;,我如何获得它   排除所有这些?

使用此正则表达式

[A-HJ-NPR-Z]{17}

你只匹配大写字母,除了I,O,Q ...... 任何其他被排除在外的字符

请注意,您可能需要用其他内容包围正则表达式... 这取决于你正在寻找这些词语的背景;例如:

如果你想匹配那个模式,但每行一个单词, 你可以使用:

^[A-HJ-NPR-Z]{17}$

见这里:https://regex101.com/r/w7zMEY/2

如果你想匹配那个模式,那就是随机的&#39;在一条线上, 但只有当它没有被其他大写字母包围时,你才可以使用:

(?<=[^A-Z])[A-HJ-NPR-Z]{17}(?=[^A-Z])

见这里:https://regex101.com/r/w7zMEY/3