javascript - 如何强制执行正则表达式中的总字符数?

标签 javascript regex

假设我有一串长度为4的数字。

const example = "1234";

我需要验证以下模式是否全部有效:

1-2-3-4
1234
12-34
1-234
123-4

我将第一个和最后一个字符设置为数字。这样就为“-”字符留下了 3 个可能的位置。这就是我现在所拥有的:

\d{1}[-]? (\d[-]?){0,2} [-]?\d{1}

这似乎工作正常。然而,它最终也会匹配像

这样的字符串
12

不遵守字符串长度为 4 个字符的规则。我如何强制这里的总字符长度?

最佳答案

您的模式将允许 12 因为这部分 (\d[-]?){0,2} 可以匹配 0、1 或 2 次,并且只有第一个和最后一个数字不是可选的。

您可以使用带有可选 - 的重复组

请注意,您可以省略 {1}

^\d(?:-?\d){3}$
  • ^ 字符串开头
  • \d 匹配数字
  • (?:-?\d){3} 重复 3 次,匹配可选的 - 和数字
  • $ 字符串结尾

Regex demo

关于javascript - 如何强制执行正则表达式中的总字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58526888/

相关文章:

javascript - 当这些 javascript 函数触发时,我是否正确地使用了 setTimeout() ?

javascript - html 日期时间形式

asp.net - 正则表达式解析 csv

java - 使用正则表达式匹配分隔列表中的子字符串

javascript - 正则表达式反向引用,我缺少什么?

javascript - 为什么我的正则表达式无法正常工作?

regex - 如何在 GNU awk 中设置多字符记录分隔符 RS 使其包含新行?

python - 具体正则表达式搜索python

javascript - React 组件游戏未使用路由渲染

javascript - 正则表达式替换字符串中 '&'中的所有 ""....在javascript中