我正在尝试使用正则表达式进行以下匹配。
- 输入字符应为 2-10 个字符的大写字母。
- 如果是 2 个字符,则仅允许在第一或第二位置不包含 A、E、I、O、U 的 2 个字符。
我试过了:
[B-DF-HJ-NP-TV-XZ]{2,10}
它运作良好,但我不太确定这是否是在这里执行正则表达式的正确和最有效的方法。
杰里的所有功劳,他的回答:
^(?:(?![AEIOU])[A-Z]{2}|[A-Z]{3,10})$
解释:
^ = “字符串开头”,和 $ = “字符串结尾”。这对于防止错误匹配很有用(例如,来自 11 个字符输入的 10 个字符匹配,或“AMRXYZ”中的“MR”匹配)。
(?![AEIOU]) 是字符 A、E、I、O 和 U 的负前瞻- 即,如果文本包含元音,则正则表达式将不匹配。这仅适用于条件“OR”(|) 正则表达式的前半部分,因此在较长的匹配中仍允许使用元音。
根据您在上面的问题中已经证明了对正则表达式的理解,其余部分相当明显。