Javascript中带有范围的数字的正则表达式

时间:2017-06-16 20:03:04

标签: javascript regex

我正在使用正则表达式,并注意到以下代码正在返回true。任何人都可以解释原因吗?



console.log(/\d{4,12}$/.test('12345678901234567890'));




如何在正则表达式中使用有限的数字,4-8(位数)和一些字母? Ex-(' abc7896' - > true,' a78b96' - > true等)

4 个答案:

答案 0 :(得分:0)

\d{4,12}查看字符串是否包含 4到12位数,这是正确的。如果你想限制这个,你可以使用锚标记 - ^作为开头,$作为结束字符串,如下所示:

^\d{4,12}$/^\d{4,12}$/

现在从字符串的开头到结尾,只能出现4到12个字符。

答案 1 :(得分:0)

您应该在模式的开头和结尾使用字符^$。这样做表明您正在寻找一个以数字开头的字符串,它可以包含4到12之间的任意数字。

答案 2 :(得分:0)

根据您在问题中的评论和修改,您可以使用此正则表达式:

/^(?:[a-z]*\d){4,8}[a-z]*$/gim

RegEx Demo

RegEx分手:

^            - Start
(?:          - Start non-capturing group
   [a-z]*\d  - Match 0 or more alphabets followed by a digit
){4,8}       - End non-capturing group. [4,8} matches it 4 to 8 times
[a-z]*       - Match trailing 0 or more alphabets in input
$            - End

<强>标志:

g - Global search
i - Ignore case Match
m - Multiline mode

答案 3 :(得分:0)

您可以检查字符串中是否有4到12位数字,其间有一些非数字。

console.log(/^\D*(\d\D*){4,12}$/.test('a78b96'));
console.log(/^\D*(\d\D*){4,12}$/.test('a786'));
console.log(/^\D*(\d\D*){4,12}$/.test('a1234567890123'));