【发布时间】:2021-09-16 10:00:51
【问题描述】:
好的,我有这个模式
^(([0-9*\/]+)\s??){7}$
默认情况下,它应该匹配可以具有以下示例形式之一的 7 个片段:
[0/2, *, 2, /]
问题是,这匹配:
-
* * 0/2 * *- 不正确 -
* * * * * * *- 正确 -
* 0/2 * * * 2 *- 正确 -
* 0/2 0/2- 不正确
在 C# 中,我只会在第一个捕获组上使用 ++,它会起作用,但 Javascript 有一个过时的正则表达式,缺少关键功能。
这里是重现的游乐场:https://regex101.com/r/Pk23dV/1
【问题讨论】:
-
您没有告诉正则表达式引擎匹配 7 次出现的空格分隔实体。您只告诉它匹配 7 个出现的一个或多个数字、星号或斜杠,空格是可选的(请参阅
??量词)。此外,您不能在 C# 中使用++,它的正则表达式引擎不支持所有格量词(仍然停留在 regex101 测试中?regex101 不支持 .NET 正则表达式风格)。使用^[0-9*\/]+(?:\s[0-9*\/]+){6}$ -
@WiktorStribiżew 我没有被 regex101 困住,我让它在 C# 中工作,这次我在使用 Javascript 时遇到了困难
-
但是你不能在 C# 中使用
++。请在评论中分享那部分 C# 代码,我很乐意看到。^[0-9*\/]+(?:\s[0-9*\/]+){6}$是否以您想要的方式解决当前问题?如果要允许尾随空格,请在$之前添加\s?。 -
@WiktorStribiżew 我还没有在后端测试它,我还没有让前端部分运行(javascript)
-
好的,只是想防止再次重复
标签: javascript regex