2016-11-15 85 views
0

還有就是檢測IBAN文本(包括特定國家的格式?)檢測IBAN文本

其實我這個正則表達式查找IBAN一個簡單的正則表達式:

[a-zA-Z]{2}[0-9]{2}[0-9a-zA-Z]{10,30} 

但是這並未」噸匹配格式化IBAN等(正常的,我沒有引入空格檢測):

FR76 30003 02420 002202XXXXX 77 

PT50 0002

你能幫我嗎?我在哪裏可以找到所有按國家格式化的IBAN模式?

例子: 「我的IBAN是PT50技術正則表達式和 其中之一PT500002抓住它太」

我想提取/處理「PT50 0002」和「PT500002」。

編輯: 解決方案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}) 

而對於法國特定的模式是行不通的。

+1

https://github.com/arhs/iban.js – BenM

+0

爲什麼不去除所有空格然後應用正則表達式? –

+0

就像在標題中提到的,我想檢測一個大文本IBAN(來處理它),而不是驗證它。 – Aure77

回答

2

對於有效的IBAN,使用的正則表達式不正確。使用此正則表達式,而不是

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

FR76 30003 02420 002202XXXXX 77

PT50 0002

來源:http://snipplr.com/view/15322/iban-regex-all-ibans/

有關IBAN格式的更多信息:

Wikipedia

https://en.wikipedia.org/wiki/International_Bank_Account_Number

編輯:

對於更復雜的驗證,檢查這個代碼https://jsfiddle.net/kf332bhj/1/

要處理的空間,檢測的國家和定義基於碳化長度

正則表達式查詢最新來自SWIFT的IBAN標準

https://www.swift.com/standards

https://www.swift.com/standards/data-standards/iban

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 
     }; 

編輯2:

要回答英戈萊茵哈特,檢查IBAN註冊表(PDF)在https://www.swift.com/standards/data-standards/iban

一)挪威的11

最小BBAN b)對於IBAN,9-15只能是數字([0-9] {7})。例如,KZ86 125 ķZT 50 0410 0100有效期爲哈薩克斯坦

+1

不適用于格式化的IBAN:https://regex101.com/r/VqmlM7/1 – Aure77

+0

同樣,所提供的代碼是驗證器,而不是檢測器(所以如何查找國家代碼而不檢測整個文本中的IBAN模式...) – Aure77

+0

它必須是我相信的程序化。當我有空時,我會在今天晚些時候草擬一個方法。 –