如果String中包含两个字母和一个可变数字的数字,如何检查正则表达式?

问题描述 投票:1回答:3

我有这个非常具体的用例,我想检查一个字符串是否包含2个小写字母,由可变数字的数字和“-abc”连接。

“-abc”部分不能是变量,应始终为“-abc”。所以最后只有位数可以变化。

它可以是这样的:

AB123-ABC

或者像这样:

AB123456-ABC

或者甚至喜欢这样:

cd5678901234-ABC

我尝试了以下但它不起作用:

if (s.toLowerCase().matches("^([a-z]{2})(?=.*[0-9])-abc")) {
    return true;
}
java regex string
3个回答
1
投票

你是关闭而不是(?=.*[0-9])使用\d*匹配零个或多个数字或\d+匹配一个或多个数字,所以你可以使用这个正则表达式^[a-z]{2}\d*-abc

if(s.toLowerCase().matches("^[a-z]{2}\\d*-abc")){
   return true;
}

check regex demo


1
投票

你不需要做if声明。做就是了:

s.toLowerCase().matches("^[a-z]{2}\d+-abc")

因为它已经返回true。请注意我的答案与上面的答案不同,因为它需要字母和-abc之间的数字。


0
投票

您要使用的正则表达式是:

 /^[a-z]{2}[0-9]+-abc$/i
                ^ 
               "+" means "at least 1"

这将恰好匹配两个字母,至少一个数字和一个尾随-abc

您还可以使用Pattern类创建单个Regex对象。然后,您可以使用Pattern.CASE_INSENSITIVE标志来忽略大小写。

© www.soinside.com 2019 - 2024. All rights reserved.