正则表达式在经过长度时返回匹配的一部分,而不是false

时间:2018-06-28 14:52:14

标签: javascript regex

我想检查一个数字序列是否以4开头并且正好有12到15个数字(数字长度必须从13到16个数字)。

我希望我的正则表达式在小于或等于{12,15}时返回false。

我正在测试此正则表达式:4{1}\d{12,15},该函数在数字小于13位数字时有效,在这种情况下,它返回false,但在从15位数字开始传递时,它仅返回字符串的一部分,而不是null。 例如:

使用:412345678901 preg_match()返回:

array()

使用:412345678901234567 preg_match()返回:

array(
    0 => 4123456789012345
)

在第二种情况下,我也希望它也是假的,因为该长度大于我在Regex上设置的15。

1 个答案:

答案 0 :(得分:1)

您应使用锚点^$来声明字符串的开头和结尾。

您可以省略{1}量词。

^4\d{12,15}$

const strings = [
  "4666666666666",
  "466666666666",
  "46666666666666777"

];
let pattern = /^4\d{12,15}$/;

strings.forEach((s) => {
  console.log(s + " ==> " + pattern.test(s));
});

Demo