【发布时间】:2018-04-18 19:50:11
【问题描述】:
我需要帮助创建一个正则表达式来检查输入是否正确
- 17 个字符长
- 不得包含特殊字符或空格
- 不得包含 I、O 或 Q
- 只允许大写字母。
对于第一个 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 所拥有的。