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

时间:2019-04-21 11:12:30

标签: java regex regex-negation regex-group

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

假设我有这两组:

第1组:router.post("/", async (request, response) => { try { const user = new Users({new user's data here..... }); const result = await user.save(); response.send(result); } catch (error) { response.status(400).send(error); }

第2组:[a-zA-Z]

是否存在适用的正则表达式,以仅匹配以下字符串:[0-9], 或仅此一个:abc

但是,当存在表示两个组的组合的字符串(例如:123

时,什么都不匹配)?

P.S:我正在使用Java。

2 个答案:

答案 0 :(得分:8)

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

说明:

^-字符串的开头

(?:...)-非限制组

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

|-交替

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

$-匹配字符串的结尾

Demo

答案 1 :(得分:3)

根据您的描述,我认为您只需要|,在正则表达式中表示“或”。匹配[a-zA-Z] [0-9],但不能同时匹配。

例如

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