我正在尝试检查用户输入的内容是否以两个字母开头,后跟6、8或10个数字。检查字符串长度应该没问题,但是有没有一种更好的方法来检查前两个字符是字母,后面的6、8或10个字符是数字,而不是把每个字符都转换成unicode,然后用这种方式进行检查?
发布于 2011-08-25 21:28:41
您可以使用regex:
^[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/
发布于 2011-08-25 21:28:11
为什么不使用正则表达式呢?Javascript有一个很好的正则表达式支持。
发布于 2011-08-25 21:29:50
我突然想起来了:
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。
https://stackoverflow.com/questions/7197384
复制相似问题