错误检查输入,Javascript

发布于 2024-12-01 17:30:50 字数 140 浏览 1 评论 0原文

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

I am trying to check that what the user inputs begins with two letters, followed by either 6, 8 or 10 numbers. Checking string length should be ok but is there a neater way to check that the first two characters are letters and that the subsequent 6, 8 or 10 characters are numbers than converting each character to unicode and then checking that way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绝不放开 2024-12-08 17:30:50

您可以使用正则表达式:

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

You can use regex:

^[a-zA-Z]{2}(?:\d{6}|\d{8}|\d{10})$

This will pass only if the first 2 are alphas and next 6 or 8 or 10 are numbers.

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

Here's complete JS example: http://jsfiddle.net/mrchief/sRLrW/

客…行舟 2024-12-08 17:30:50

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

Why not use regular expressions? Javascript has a decent regular expression support.

何时共饮酒 2024-12-08 17:30: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。

Going off the top of my head:

var str = 'abc1234567890';

if (/^[a-z]{2}[0-9]{6}(([0-9]{2}){0,2}$/.test(str)) {
   ...

}

Doing a [0-9]{6,10} wouldn't do, as that'd allow 7 or 9 digits, not just 6/8/10.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文