2016-11-25 66 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