【问题标题】:Error Checking Input, Javascript错误检查输入,Javascript
【发布时间】:2011-11-04 01:44:26
【问题描述】:

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

【问题讨论】:

    标签: javascript string unicode input character


    【解决方案1】:

    你可以使用正则表达式:

    ^[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/

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我是新手,你说的正则表达式是什么意思?
      • 像上面的 Mrchief 的例子吗?
      • 谢谢!这比我尝试做的方式要好得多!
      【解决方案3】:

      想不通:

      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。

      【讨论】:

        猜你喜欢
        • 2012-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-07
        • 1970-01-01
        • 2016-05-07
        • 2016-05-26
        相关资源
        最近更新 更多