首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >检查输入时出错,Javascript

检查输入时出错,Javascript
EN

Stack Overflow用户
提问于 2011-08-25 21:24:42
回答 3查看 170关注 0票数 0

我正在尝试检查用户输入的内容是否以两个字母开头,后跟6、8或10个数字。检查字符串长度应该没问题,但是有没有一种更好的方法来检查前两个字符是字母,后面的6、8或10个字符是数字,而不是把每个字符都转换成unicode,然后用这种方式进行检查?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-25 21:28:41

您可以使用regex:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$

只有当前2个是字母,接下来的6、8或10是数字时,这才会通过。

JS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
EN

Stack Overflow用户

发布于 2011-08-25 21:28:11

为什么不使用正则表达式呢?Javascript有一个很好的正则表达式支持。

票数 0
EN

Stack Overflow用户

发布于 2011-08-25 21:29:50

我突然想起来了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7197384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文