求仅接受分号分隔大写字母(A-Z)的正则表达式
正则表达式:匹配分号分隔的大写字母序列
你的思路已经很贴近需求了,只差一个关键的锚点就能实现严格匹配。正确的正则表达式是:
^[A-Z]+(;[A-Z]+)*$
为什么这个正则能满足需求?
我们拆解一下每个部分的作用:
^:锚定字符串的开头,确保整个字符串从大写字母开始,不会有前置的无关字符[A-Z]+:匹配一个或多个大写英文字母,作为序列的起始项(;[A-Z]+)*:匹配零次或多次「分号+一个/多个大写字母」的组合,支持任意数量的分号分隔项$:锚定字符串的结尾,确保字符串结束后没有多余的字符
验证你的示例
所有你列出的符合要求的内容都能被这个正则匹配:
A✅ 单个大写字母A;B✅ 两个分号分隔的大写字母A;B;C;F✅ 多个分号分隔项A;E;Q✅ 同上A;YY✅ 分号后支持多个连续大写字母
说说你原来正则的小问题
你之前尝试的[A-Z]+(;[A-Z]+)*$缺少了开头的^锚点,这会导致它匹配像XA;B或者123A;C这类带前置无关字符的字符串——因为它只检查了结尾是否符合规则,却没限制开头必须是大写字母。加上^之后,就能实现仅允许符合规则的内容通过匹配,其余内容全部排除的要求了。
内容的提问来源于stack exchange,提问作者Madhusudhan Reddy
相关产品推荐
相关产品推荐

