Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在此间隔[02-98]内开发带有编号的正则表达式iban代码?_Java_Regex - Fatal编程技术网

Java 如何在此间隔[02-98]内开发带有编号的正则表达式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

我想在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 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}
量词

详细信息

  • ^
    -字符串的开头
  • [a-zA-Z]{2}
    -两个ASCII字母
  • (?:0[2-9]|[1-8][0-9]| 9[0-8])
    -介于
    02
    98
  • [a-zA-Z0-9]{4}
    -四个ASCII字母数字字符
  • [0-9]{6}
    -六位数字
  • [a-zA-Z0-9]{0,20}
    -0到20个ASCII字母数字字符
  • $
    -字符串结束

抱歉中提到了它的一个实用程序,但它对我不起作用。你尝试了什么?它不会失败。那里的模式是准确的。我正在尝试执行这个正则表达式代码@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从该站点可以看到99和01(第3个和第4个字符)被接受的问题,但您没有说明一个单位数前面应该有一个
0
。否则,该数字将与
[a-zA-Z0-9]{4}匹配
pattern。请使用此模式更新问题,因为这现在更有意义。