【发布时间】:2014-08-04 08:11:10
【问题描述】:
我不明白如何限制捕获组。
如果我有这样的正则表达式:
/^(\w{2,}\s\w{2,}){4,15}$/
我认为这会捕获任何字符串:
- 正好两个字,
- 每个单词至少有 2 个字符,
- 整个字符串不超过 15 个字符。
但是我的捕获组的限制不起作用。我可以完全限制捕获组吗?
PS。我正在使用 JavaScript 来测试示例中的正则表达式。
【问题讨论】:
标签: javascript regex
我不明白如何限制捕获组。
如果我有这样的正则表达式:
/^(\w{2,}\s\w{2,}){4,15}$/
我认为这会捕获任何字符串:
但是我的捕获组的限制不起作用。我可以完全限制捕获组吗?
PS。我正在使用 JavaScript 来测试示例中的正则表达式。
【问题讨论】:
标签: javascript regex
这个基于前瞻的正则表达式应该适合你:
/^(?=.{4,15}$)\w{2,}\s\w{2,}$/
您的正则表达式:^(\w{2,}\s\w{2,}){4,15}$ 基本上意味着应该有 4 到 15 个包含 2 个单词的字符串实例,其中至少 2 个字符由空格分隔
【讨论】:
{4,15} 本质上是说捕获的组可以出现 4 到 15 次。您想限制实际的字符数。
(?!.{16})
^\w{2}(?!.{14})\w*\s\w{2,}$