匹配字符串的java正则表达式具有唯一的大写字母

tyu7yeag  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(280)

我试图检查字符串的长度是否为3,是否有唯一的大写字符,后面是4位年份(从1900年到2019年),我想出了下面的表达式,但无法确定字符串是否有重复字符。有人能帮我修一下吗?

^(?:([A-Z]{3})(?!.*\1))(19\d{2}|20[0-1]\d)$

例子:
ABC1990 should be matched and Group1 as ABC and Group2 as 1990 ABB1900,ABA2000,ATA1990,ATRV2010 should be failed

iszxjhcz

iszxjhcz1#

原始问题:
您可以使用以下正则表达式:

^(?:([A-Z])(?!.*\1)){3}$

正则表达式演示
正则表达式详细信息: ^ :开始 (?: :启动非捕获组 ([A-Z]) :匹配大写字母并在组#1中捕获 (?!.*\1) :反向向前看,确保前面没有重复的同一个字母 ){3} :结束非捕获组。 {3} 和其中3个匹配 $ :结束
更新问题:根据您的更新问题,您可以使用此正则表达式匹配3个唯一的大写字母,后跟4位数的年份 1900 to 2019 .

^((?:([A-Z])(?![A-Z]*\2)){3})(19\d{2}|20[01]\d)$
``` `(19\d{2}|20[01]\d)` 匹配从1900年到2019年的4位数年份
正则表达式演示2

相关问题