2016-11-25 64 views
0

我試圖將正則表達式綁定到我的HTML表單的歐盟銀行帳戶。到目前爲止,我能拼湊出的是:HTML正則表達式空間

pattern="[A-Z]{2}[000000000-999999999]{9} 

會讓一些通這對例如UK123456789

但我也想讓它傳遞了UK12 2345 6789

我該如何去關於在這些展示位置接受空間?

+0

'[000000000-999999999] {9}'是'一樣[0-9] {9}' – Oriol

回答

2
pattern="[A-Z]{2}[000000000-999999999]{9}" 

這隻意外地做你想要的。 ([000000000-999999999]說:「這個角色應該是一個00或在0-9範圍內的0或...字符或99或者......一個9)的適當形式是:

pattern="[A-Z]{2}[0-9]{9}" 

或者更準確地說:

pattern="[A-Z]{2}\d{9}" 

現在我們有一些比較理性,我們可以擴展到:

pattern="[A-Z]{2}\d{2}\s?\d{4}\s?\d{4}" 

它允許在特定位置的可選空白。

如果你想允許僅僅空格,而不是任何空白字符,你可以這樣做:

pattern="[A-Z]{2}\d{2} ?\d{4} ?\d{4}" 
+0

這不工作? ''UK 123456789'.match(/ [A-Z] {2}?\ d {9}/g);'看起來更容易閱讀,但我不知道那麼正確。 –

+0

@JaredFarrish該表達式肯定會匹配該字符串,但該字符串不是OP想要的表單。另外,'g'是不必要的,因爲只有第一場比賽似乎需要。 – Ouroborus

+0

只是想知道,什麼樣的形式是什麼OP想要的? –

0

您可以允許使用\s?的可選空白,儘管它會讓您的正則表達式更長一些。下面的正則表達式將允許帶或不帶空格(DEMO

\w{2}\d{2}\s?\d{4}\s?\d{4} 

但要知道,一個歐洲IBAN比你已經張貼什麼更長 - 雖然我不知道它是如何在英國。

-1

如果你不在乎這些空間,只要有9個數字,你可以檢查之前去掉所有的空格:

str = 'UK12 234 56789'; 
 
strToCheck = str.replace(/ /g, ''); 
 
validStr = strToCheck.match(/[a-zA-Z]{2}\d{9}/); 
 
if (validStr) { 
 
    console.log('Valid'); 
 
}

+0

我注意到OP只想驗證特定位置的空間,在這種情況下,我的回答不正確,因爲它會驗證字符串中任何位置的空格。這就是說,在實踐中,我不確定爲什麼它不值得驗證意外位置的空間,只要有足夠的字母和數字。 – sideroxylon