如何编写javascript正则表达式,使其能够接受6个字符

如何编写javascript正则表达式,使其能够接受6个字符,javascript,jquery,regex,Javascript,Jquery,Regex,Javascript正则表达式来验证它是否包含6个字符,其中一个字符(1)应该是数字 var pwdregex =/^[A-Za-z1-9]{6}$/; [编辑]修复了明显的错误 如果您同意使用函数而不是正则表达式,则可以执行以下操作: var sixAlphaOneDigit = function(s) { return !!((s.length==6) && s.replace(/\d/,'').match(/^[A-Za-z]{5}$/)); }; sixAlph

Javascript正则表达式来验证它是否包含6个字符,其中一个字符(1)应该是数字

var pwdregex  =/^[A-Za-z1-9]{6}$/;

[编辑]修复了明显的错误

如果您同意使用函数而不是正则表达式,则可以执行以下操作:

var sixAlphaOneDigit = function(s) {
  return !!((s.length==6) && s.replace(/\d/,'').match(/^[A-Za-z]{5}$/));
};

sixAlphaOneDigit('1ABCDE'); // => true
sixAlphaOneDigit('ABC1DE'); // => true
sixAlphaOneDigit('ABCDE1'); // => true
sixAlphaOneDigit('ABCDE'); // => false
sixAlphaOneDigit('ABCDEF'); // => false
sixAlphaOneDigit('ABCDEFG'); // => false

如果您希望严格在正则表达式中执行此操作,那么您可以构建一个非常长的模式,该模式枚举数字位置和周围(或前导或后接)字符的所有可能性。

这将保证正好有一个数字(即非零十进制数字):

var pwdregex=/^(?=.{6}$)[A-Za-z]*[1-9][A-Za-z]*$/;
这将保证一个或多个连续数字:

var pwdregex=/^(?=.{6}$)[A-Za-z]*[1-9]+[A-Za-z]*$/;
这将保证一个或多个不一定连续的数字:

var pwdregex=/^(?=.{6}$)[A-Za-z]*(?:[1-9][A-Za-z]*)+$/;

以上所有表达式总共需要六个字符。如果要求为六个或更多字符,请将
{6}
更改为
{6,}
(或从
{6}$
中删除
$
)。

长度为6的1位字符和字母数字字符的所有可能组合

if (subject.match(/^[a-z]{0,5}\d[a-z]{0,5}$/i) && subject.length == 6) {
    // Successful match
} else {
    // Match attempt failed
}

你现在的正则表达式有什么问题?你想要刺的第一个字符是一个digt吗?你想要它正好是6个字符长(不再,不再短)?您希望只有一个数字字符(不多也不少)和其余的字母吗?为什么要排除数字“零”?为什么需要在正则表达式中执行所有操作?为什么不检查字符串的长度是否为六个字符,并执行正则表达式以确保有一个数字?@jfriend:是的,我想要的是六个字符的长度,其中应该有一个字符作为数字。这不仅强制执行一个数字,而且不强制执行a-Za-z alpha。@jfriend00:对,我怎么会错过它?更新后的解决方案应该有效。您最近的编辑仍然没有强制执行一位数。您可以在开始或结束处使用任何字符(包括字母或甚至非字母数字字符)。您可以通过将正则表达式更改为
/^[A-Za-z]{5}$/
来修复此问题。奇妙的正则表达式。添加到收藏夹:)令人惊讶的是,正向前瞻断言可以包含行尾标记,并将与下面的模式匹配相同的字符!这个答案需要更多的投票。如果你们喜欢这个,你们会喜欢杰弗里·弗里德尔(Jeffrey Friedl)曾经教我的关于regex的所有知识:即。这是我读过的最有用的书。现在就出去买这本书!(读了几遍之后,你甚至可以开始使用正则表达式(cough)解析HTML!)@ridgerunner我有这本书,但还没来得及全部读完呢!:)我会给这本书+1,但我不能:(@maerics谢谢,但我想ridgerunner>我们所有人:)