2011-08-25 47 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