2011-08-25 104 views
0

我想檢查用戶輸入的內容是以兩個字母開頭,後面跟着6,8或10個數字。檢查字符串長度應該沒問題,但有沒有更好的方法來檢查前兩個字符是否是字母,並且後續的6,8或10個字符是數字,而不是將每個字符轉換爲unicode,然後檢查這種方式?錯誤檢查輸入,Javascript

回答

2

可以使用正則表達式:

^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$ 

這將僅通過如果第一2是阿爾法和接下來的6或8或10是數字。

JS

function isValid(txt) { 
    return /^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$/.test(txt); 
} 

alert(isValid("ab123456")); // pass 
alert(isValid("ab1234567")); // fail, contains 7 digits 
alert(isValid("abc123456")); // fail, starts with 3 chars 
alert(isValid("ab12345678")); // pass 

下面是完整的JS例如:http://jsfiddle.net/mrchief/sRLrW/

0

爲什麼不使用正則表達式? Javascript有一個體面的正則表達式支持。

+0

我是新手,這是什麼意思的正則表達式? – Stumf

+0

像上面的Mrchief的例子? – Stumf

+0

@Stumf:查看我的更新答案,瞭解完整的JS示例。 – Mrchief

0

去了我的頭頂部:

var str = 'abc1234567890'; 

if (/^[a-z]{2}[0-9]{6}(([0-9]{2}){0,2}$/.test(str)) { 
    ... 

} 

做一個[0-9] {6, 10}不會這樣做,因爲那樣會允許7或9位數字,而不僅僅是6/8/10。

+0

感謝您的幫助! – Stumf