【问题标题】:Need some help on RegEx在 RegEx 上需要一些帮助
【发布时间】:2018-04-18 19:50:11
【问题描述】:

我需要帮助创建一个正则表达式来检查输入是否正确

  1. 17 个字符长
  2. 不得包含特殊字符或空格
  3. 不得包含 I、O 或 Q
  4. 只允许大写字母。

对于第一个 17 个字符部分,我已经通过使用 if(str.length() == 17) 解决了它(根据硬件要求),并且我有点了解如何执行排除字符部分。这是我目前所拥有的

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

但这不起作用。我对如何让它工作感到困惑。我知道\\S 意味着它不能包含任何空格。 ^ 意味着它应该排除 I,O,Q (或者我认为它应该,不确定),然后 [A-Z] 意味着它应该全部大写。

谁能帮我弄清楚如何为此正确制作正则表达式?

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

谢谢

【问题讨论】:

  • 请注意,"Need some help on RegEx" 是 StackOverflow 问题的一个糟糕标题,因为它告诉我们没有任何用处,除了您遇到正则表达式问题 - 为此添加 regex标记您的问题(我已经完成了)。请考虑使用信息量更大的问题标题,这些标题可以总结您的实际问题。这样做会帮助您获得更好的帮助。
  • [ABCDEFGHJKLMNPRSTUVWXYZ]{17}(或[A-HJ-NPR-Z]{17}(我认为))
  • 在正则表达式中,^ 字符被重载。在字符类[] 之外,它表示“字符串的开头”,在字符类内部,它表示“不是这些”。将^ 移动到字符类内部不会解决您的正则表达式问题,但我认为您应该知道。使用 @SeanBright 所拥有的。

标签: java regex


【解决方案1】:

你可以使用这个正则表达式:

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

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

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

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


旁注,我查看了其他与删除相关的正则表达式问题 特殊字符,但是只排除了几个$@&,怎么弄 排除所有这些?

使用这个正则表达式

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

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


请注意,您可能需要用其他东西包围正则表达式... 这取决于您在其中寻找这些词的上下文;例如:

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

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

请看这里:https://regex101.com/r/w7zMEY/2

如果你想匹配那个模式,在一行的“随机”位置, 但前提是它没有被其他大写字母包围,你可以使用:

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

请看这里:https://regex101.com/r/w7zMEY/3

【讨论】:

  • 我喜欢这个。
猜你喜欢
  • 1970-01-01
  • 2015-03-09
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
相关资源
最近更新 更多