【发布时间】:2016-04-25 17:45:41
【问题描述】:
前三个字符必须是大写字母,不包括 I、O、S 或 Z。然后是破折号,然后是四个字符,可以是 3 以外的任何字符。我有这个,但第一个负前瞻也捕获了第一个之外的东西捕获组。
^((?!.*[IOSZ])[A-Z]{3})-((?!.*3)(.{4}))$
例如,我想捕获AAA-444Z。
【问题讨论】:
前三个字符必须是大写字母,不包括 I、O、S 或 Z。然后是破折号,然后是四个字符,可以是 3 以外的任何字符。我有这个,但第一个负前瞻也捕获了第一个之外的东西捕获组。
^((?!.*[IOSZ])[A-Z]{3})-((?!.*3)(.{4}))$
例如,我想捕获AAA-444Z。
【问题讨论】:
【讨论】:
^((?![IOSZ])([A-Z]{3}))-((?!3)(.{4}))$ 也会这样做
你不需要任何前瞻,因为你可以使用这个正则表达式:
^[A-HJ-NP-RT-Y]{3}-[^3]{4}$
[A-HJ-NP-RT-Y]{3} 将匹配 3 个不是 I, O, S or Z 的大写字母实例。[^3]{4} 匹配任何不是3 的字符。根据下面的评论,如果您真的只想负前瞻,请使用:
^(?:(?![IOSZ])[A-Z]){3}-(?:(?!3).){4}$
【讨论】: