我正在使用正则表达式,并注意到以下代码正在返回true
。任何人都可以解释原因吗?
console.log(/\d{4,12}$/.test('12345678901234567890'));

如何在正则表达式中使用有限的数字,4-8(位数)和一些字母? Ex-(' abc7896' - > true,' a78b96' - > true等)
答案 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分手:
^ - 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'));