检查输入时出错,Javascript

检查输入时出错,Javascript,javascript,string,unicode,input,character,Javascript,String,Unicode,Input,Character,我试图检查用户输入的内容是否以两个字母开头,后跟6、8或10个数字。检查字符串长度应该可以,但是有没有比将每个字符转换为unicode然后进行检查更简洁的方法来检查前两个字符是字母,后面的6、8或10个字符是数字?为什么不使用正则表达式?Javascript具有良好的正则表达式支持。您可以使用正则表达式: ^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$ 仅当前2个是字母,下6、8或10个是数字时,此操作才会通过 JS: function isValid(txt) {

我试图检查用户输入的内容是否以两个字母开头,后跟6、8或10个数字。检查字符串长度应该可以,但是有没有比将每个字符转换为unicode然后进行检查更简洁的方法来检查前两个字符是字母,后面的6、8或10个字符是数字?

为什么不使用正则表达式?Javascript具有良好的正则表达式支持。

您可以使用正则表达式:

^[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示例:

让我神魂颠倒:

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。

我不熟悉这一点,正则表达式是什么意思?就像上面的Chief先生的例子一样?谢谢!这比我尝试的方式好多了!