【发布时间】:2011-11-04 01:44:26
【问题描述】:
我正在尝试检查用户输入的内容是否以两个字母开头,后跟 6、8 或 10 个数字。检查字符串长度应该没问题,但是有没有比将每个字符转换为 unicode 然后检查更简洁的方法来检查前两个字符是字母,以及随后的 6、8 或 10 个字符是数字?
【问题讨论】:
标签: javascript string unicode input character
我正在尝试检查用户输入的内容是否以两个字母开头,后跟 6、8 或 10 个数字。检查字符串长度应该没问题,但是有没有比将每个字符转换为 unicode 然后检查更简洁的方法来检查前两个字符是字母,以及随后的 6、8 或 10 个字符是数字?
【问题讨论】:
标签: javascript string unicode input character
你可以使用正则表达式:
^[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/
【讨论】:
为什么不使用正则表达式? Javascript 有不错的正则表达式支持。
【讨论】:
想不通:
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。
【讨论】: