Javascript RegEx非捕获前缀

Der*_*kel 10 javascript regex

我试图用Javascript中的RegEx做一些字符串替换.该场景是一个包含长逗号分隔的数字列表的单行字符串,其中可能存在重复项.

示例字符串是:( 272,2725,2726,272,2727,297,272结尾可能以逗号结尾也可能不以逗号结尾)

在这个例子中,我试图匹配整数272的每次出现.(预期3个匹配)我试图使用的示例正则表达式是: (?:^|,)272(?=$|,)

我遇到的问题是第二和第三场比赛包括我不想要的主要逗号.我很困惑,因为我认为(?:^|,)会匹配,但不会捕获.有人可以为我阐明这个吗?有趣的是,尾随的逗号被排除在结果之外,这就是我想要的.

值得一提的是,如果我使用C#,前缀匹配的语法可以满足我的需求:(?<=^|,) 但是,它似乎在JavaScript中不受支持.

最后,我知道我可以使用字符串拆分,数组操作和重新加入来解决它,但我想学习.

Tim*_*ker 16

改为使用单词边界:

\b272\b
Run Code Online (Sandbox Code Playgroud)

确保只272匹配,但不是2725.

(?:...) 匹配并且不捕获 - 但它匹配的任何东西都将成为整体匹配的一部分.

一个环视断言(?=...)不同的是:是否有可能(或不可能)封闭的正则表达式在当前点匹配它只检查,但它不会增加整个比赛.