javascript - 正则表达式在传递长度时返回部分匹配而不是 false

标签 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
)

在第二种情况下,我也希望它为 false,因为长度大于我在正则表达式上设置的 15。

最佳答案

您应该使用 anchor ^$ 来断言字符串的开头和结尾。

您可以省略 {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

关于javascript - 正则表达式在传递长度时返回部分匹配而不是 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51085904/

相关文章:

javascript - 当 src 更改时, react img 不会立即更改。我怎样才能解决这个问题?

javascript - typescript 过滤器数组基于来自另一个数组的值

javascript - Angular - 动态打印 ng-table 标题

python - 解析嵌套模式的字符串

c++ - 如何使用正则表达式从字符串中提取值

javascript - 如何在触摸设备上滚动时停止 JS 触发

javascript - RxJS 5 任务队列,如果任务失败则继续

regex - 如何从字符串中删除第一个和最后一个破折号?

c# - 获取 HTML 元素的值

java - 使用正则表达式使用转义字符(可以自转义)分割消息