正则表达式:长度之间且必须包含字母< 4

时间:2017-02-04 04:48:47

标签: javascript jquery regex

我想用于身份证

  • 必须包含数字
  • 可以包含0到3个字符之间的A-z。 (可以在任何地方)
  • 没有空间
  • 总长度在9到19之间。

我试过这个,但它的意思是'必须包含数字和A-Z'

^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$

我需要的例子

  • 1234567890✓
  • ABC12345678✓
  • ABCD12345678✕
  • AB12345C6789✓
  • 1234ABC567890✓
  • 1234ABCE56789✕

2 个答案:

答案 0 :(得分:0)

在一般的正则表达式中,它看起来有点像[A-Za-z0-9]{9,19}[A-Za-z]{0,3}。我想在javascript中它看起来很相似。这是你需要的吗?

答案 1 :(得分:0)

前两个条件使用前瞻,条件3和4使用字符类:

Must contain number             : (?=.*\d)
Can contain 0 to 3 letter       : (?=(?:\d*[a-zA-Z]?\d*){0,3}$)
No space                        : included in the next condition
Overall length between 9 to 19. : [a-zA-Z\d]{9,19}

将它们组合在一起:

/^(?=.*\d)(?=(?:\d*[a-zA-Z]?\d*){0,3}$)[a-zA-Z\d]{9,19}$/

您可以使用不区分大小写的标志简化它:



var test = [
'1234567890',
'ABC12345678',
'ABCD12345678',
'AB12345C6789',
'1234ABC567890',
'1234ABCE56789'
];
console.log(test.map(function (a) {
  return a+' :'+/^(?=.*\d)(?=(?:\d*[a-z]?\d*){0,3}$)[a-z\d]{9,19}$/i.test(a);
}));