Java 如何在此间隔[02-98]内开发带有编号的正则表达式iban代码?
我想在iban上创建一个具有以下特征的控件:Java 如何在此间隔[02-98]内开发带有编号的正则表达式iban代码?,java,regex,Java,Regex,我想在iban上创建一个具有以下特征的控件: -最少14个字符 -最多34个字符 -前两个字符始终是两个字母(国家标识符) -第3和第4个字符始终为两位数(控制键(从02到98) 我试图用Java开发一个简单的正则表达式,其模式如下: @Pattern( regexp = "[a-zA-Z]{2}([2-9]|[1-8][0-9]|9[0-8]){2}[a-zA-Z0-9]{4}[0-9]{6}([a-zA-Z0-9]?){0,20}", message = "Le forma
-最少14个字符
-最多34个字符
-前两个字符始终是两个字母(国家标识符)
-第3和第4个字符始终为两位数(控制键(从02到98)
我试图用Java开发一个简单的正则表达式,其模式如下:
@Pattern(
regexp = "[a-zA-Z]{2}([2-9]|[1-8][0-9]|9[0-8]){2}[a-zA-Z0-9]{4}[0-9]{6}([a-zA-Z0-9]?){0,20}",
message = "Le format de l'iban est invalide"
)
第3个和第4个字符的问题是,系统不接受这些条件(10,20,30,40,50,60,70,80,90),尽管这些数字包含在您可以使用的间隔[02-98]中
^[a-zA-Z]{2}(?:0[2-9]|[1-8][0-9]|9[0-8])[a-zA-Z0-9]{4}[0-9]{6}[a-zA-Z0-9]{0,20}$
([2-9]|[1-8][0-9]|9[0-8]){2}
部分替换为(?:0[2-9]|[1-8][0-9]|9[0-8])
。您的([2-9]|[1-8][0-9]|9[0-8])2}
匹配2
和9
之间的数字的两次出现,或者匹配10和98之间的数字的两次出现。因此,您需要将0
添加到第一个备选方案中,并删除{2}
量词
见
详细信息
-字符串的开头^
-两个ASCII字母[a-zA-Z]{2}
-介于(?:0[2-9]|[1-8][0-9]| 9[0-8])
到02
98
-四个ASCII字母数字字符[a-zA-Z0-9]{4}
-六位数字[0-9]{6}
-0到20个ASCII字母数字字符[a-zA-Z0-9]{0,20}
-字符串结束$
0
。否则,该数字将与[a-zA-Z0-9]{4}匹配
pattern。请使用此模式更新问题,因为这现在更有意义。