如果字符串仅匹配 Java 中的一个组,则正则表达式匹配该字符串

Regex to match a string if it matches only one group in Java

我想知道,有没有可以帮助匹配的正则表达式 文本,仅当测试字符串仅属于测试组之一时?

假设我有这两个组:

第 1 组:[a-zA-Z]

第 2 组:[0-9]

那么是否有适用的正则表达式,只匹配以下字符串:abc, 或者只有这个:123.

但是那个不会匹配任何东西,当有一个字符串代表两个组的组合时,i.g:123abc2b?

P.S:我正在使用 Java。

交替是您问题的关键。使用模式 ^(?:\d*|[a-zA-Z]*)$

解释:

^ - 字符串的开头

(?:...) - 非捕获组

\d*- 匹配零个或多个数字

| - 交替

[a-zA-Z]* - 匹配零个或多个字母(小写或大写)

$ - 匹配字符串结尾

Demo

根据您的描述,我认为您只需要 |,这意味着 "or" 在正则表达式中。匹配 [a-zA-Z] [0-9],但不能同时匹配两者。

例如

^(?:[a-zA-Z]+|[0-9]+)$