Javascript 检测文本中的IBAN

Javascript 检测文本中的IBAN,javascript,regex,detection,iban,Javascript,Regex,Detection,Iban,有一个简单的正则表达式模式可以检测文本中的IBAN(包括特定的国家/地区格式?) 事实上,我用这个正则表达式找到了IBAN: [a-zA-Z]{2}[0-9]{2}[0-9a-zA-Z]{10,30} 但这与格式化的IBAN不匹配(正常情况下,我没有引入空格检测): 或 你能帮我吗?在哪里可以找到按国家/地区列出的所有格式的IBAN模式 例如: “我的IBAN是PT50 0002 0123 1234 5678 9015 1用正则表达式捕捉它,然后 这些也是PT50000201312345678

有一个简单的正则表达式模式可以检测文本中的IBAN(包括特定的国家/地区格式?)

事实上,我用这个正则表达式找到了IBAN:

[a-zA-Z]{2}[0-9]{2}[0-9a-zA-Z]{10,30}
但这与格式化的IBAN不匹配(正常情况下,我没有引入空格检测):

你能帮我吗?在哪里可以找到按国家/地区列出的所有格式的IBAN模式

例如:

“我的IBAN是PT50 0002 0123 1234 5678 9015 1用正则表达式捕捉它,然后 这些也是PT5000020131234567890151!”

我想提取/处理“PT50 0002 0123 1234 5678 9015 1”和“PT5000020131234567890151”

编辑: 解决方案1-非常长的模式:

((NO)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{3}|(NO)[0-9A-Z]{13}|(BE)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}|(BE)[0-9A-Z]{14}|(DK|FO|FI|GL|NL)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{2}|(DK|FO|FI|GL|NL)[0-9A-Z]{16}|(MK|SI)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{3}|(MK|SI)[0-9A-Z]{17}|(BA|EE|KZ|LT|LU|AT)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}|(BA|EE|KZ|LT|LU|AT)[0-9A-Z]{18}|(HR|LI|LV|CH)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{1}|(HR|LI|LV|CH)[0-9A-Z]{19}|(BG|DE|IE|ME|RS|GB)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{2}|(BG|DE|IE|ME|RS|GB)[0-9A-Z]{20}|(GI|IL)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{3}|(GI|IL)[0-9A-Z]{21}|(AD|CZ|SA|RO|SK|ES|SE|TN)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}|(AD|CZ|SA|RO|SK|ES|SE|TN)[0-9A-Z]{22}|(PT)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{1}|(PT)[0-9A-Z]{23}|(IS|TR)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{2}|(IS|TR)[0-9A-Z]{24}|(FR|GR|IT|MC|SM)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{3}|(FR|GR|IT|MC|SM)[0-9A-Z]{25}|(AL|CY|HU|LB|PL)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}|(AL|CY|HU|LB|PL)[0-9A-Z]{26}|(MU)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{2}|(MU)[0-9A-Z]{28}|(MT)[0-9A-Z]{2}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{4}[ ][0-9A-Z]{3}|(MT)[0-9A-Z]{29})

并且不适用于特定于法语的模式。

使用的正则表达式对于有效的IBAN不正确。改用这个正则表达式

 [a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}

资料来源:

有关IBAN格式的详细信息:

编辑:

对于更复杂的验证器,请检查以下代码

要处理空格,请检测country并根据字符长度定义正则表达式

查看来自SWIFT的最新IBAN标准

编辑2:

要回答Ingo Leonhardt的问题,请在中查看IBAN注册表(PDF)

a) 挪威的最低BBAN为11


b) 对于IBAN,9-15只能是数字([0-9]{7})。例如,KZ86 125K ZT50 0410 0100对哈萨克斯坦有效

使用的正则表达式对有效的IBAN不正确。改用这个正则表达式

 [a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}

资料来源:

有关IBAN格式的详细信息:

编辑:

对于更复杂的验证器,请检查以下代码

要处理空格,请检测country并根据字符长度定义正则表达式

查看来自SWIFT的最新IBAN标准

编辑2:

要回答Ingo Leonhardt的问题,请在中查看IBAN注册表(PDF)

a) 挪威的最低BBAN为11


b) 对于IBAN,9-15只能是数字([0-9]{7})。例如,KZ86 125K ZT50 0410 0100对哈萨克斯坦有效

为什么不去掉所有空白,然后应用正则表达式?如标题中所述,我想在大文本中检测IBAN(对其进行处理),而不是验证它。搜索“IBAN正则表达式javascript”时可能重复有各种各样的解决方案,从简单的正则表达式到完整的IBAN验证器库。请在滚动您自己的解决方案之前选择一个现有的解决方案。为什么不去除所有空白,然后应用正则表达式?如标题中所述,我想在大文本中检测IBAN(处理它),而不是验证它。搜索“IBAN正则表达式javascript”时,可能会重复有各种各样的解决方案,从简单的正则表达式到完整的IBAN验证器库。请选择一个现有的解决方案,然后再推出自己的解决方案。同样,提供的代码是一个验证器,而不是检测器(因此,如何在不检测整个文本中的IBAN模式的情况下查找国家代码…),我相信它必须是编程的。今天晚些时候我有时间的时候我会画一个方法。我对“[0-9]{7}”部分感到困惑,甚至在你提供的链接中也有一条评论说有例外。您是否有资料表明a)所有BBAN必须至少有11个字符,b)5到11个字符必须是数字?@IngoLeonhardt,检查编辑2。同样,提供的代码是验证器,而不是检测器(因此如何在不检测整个文本中的IBAN模式的情况下查找国家代码…),我相信它必须是编程的。今天晚些时候我有时间的时候我会画一个方法。我对“[0-9]{7}”部分感到困惑,甚至在你提供的链接中也有一条评论说有例外。您是否有资料表明a)所有BBAN必须至少包含11个字符,b)5到11个字符必须是数字?@IngoLeonhardt,检查编辑2。
 [a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}
var CODE_LENGTHS = {
            AD: 24, AE: 23, AT: 20, AZ: 28, BA: 20, BE: 16, BG: 22, BH: 22, BR: 29,
            CH: 21, CR: 21, CY: 28, CZ: 24, DE: 22, DK: 18, DO: 28, EE: 20, ES: 24,
            FI: 18, FO: 18, FR: 27, GB: 22, GI: 23, GL: 18, GR: 27, GT: 28, HR: 21,
            HU: 28, IE: 22, IL: 23, IS: 26, IT: 27, JO: 30, KW: 30, KZ: 20, LB: 28,
            LI: 21, LT: 20, LU: 20, LV: 21, MC: 27, MD: 24, ME: 22, MK: 19, MR: 27,
            MT: 31, MU: 30, NL: 18, NO: 15, PK: 24, PL: 28, PS: 29, PT: 25, QA: 29,
            RO: 24, RS: 22, SA: 24, SE: 24, SI: 19, SK: 24, SM: 27, TN: 24, TR: 26
        };