如果字符串仅匹配 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]*
- 匹配零个或多个字母(小写或大写)
$
- 匹配字符串结尾
根据您的描述,我认为您只需要 |
,这意味着 "or" 在正则表达式中。匹配 [a-zA-Z]
或 [0-9]
,但不能同时匹配两者。
例如
^(?:[a-zA-Z]+|[0-9]+)$
我想知道,有没有可以帮助匹配的正则表达式 文本,仅当测试字符串仅属于测试组之一时?
假设我有这两个组:
第 1 组:[a-zA-Z]
第 2 组:[0-9]
那么是否有适用的正则表达式,只匹配以下字符串:abc
,
或者只有这个:123
.
但是那个不会匹配任何东西,当有一个字符串代表两个组的组合时,i.g:123abc2b
?
P.S:我正在使用 Java。
交替是您问题的关键。使用模式 ^(?:\d*|[a-zA-Z]*)$
解释:
^
- 字符串的开头
(?:...)
- 非捕获组
\d*
- 匹配零个或多个数字
|
- 交替
[a-zA-Z]*
- 匹配零个或多个字母(小写或大写)
$
- 匹配字符串结尾
根据您的描述,我认为您只需要 |
,这意味着 "or" 在正则表达式中。匹配 [a-zA-Z]
或 [0-9]
,但不能同时匹配两者。
例如
^(?:[a-zA-Z]+|[0-9]+)$