我试图检查用户输入的内容是以两个字母开头,后跟6,8或10个数字。检查字符串长度应该没问题,但有没有更简洁的方法来检查前两个字符是字母,后续的6,8或10个字符是数字而不是将每个字符转换为unicode然后检查那个方式?
答案 0 :(得分:2)
您可以使用正则表达式:
^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$
只有当前两个是alpha并且接下来的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/
答案 1 :(得分:0)
为什么不使用正则表达式? Javascript有一个不错的正则表达式支持。
答案 2 :(得分: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。