Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式立即停止匹配,或者如果有逗号_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式立即停止匹配,或者如果有逗号

Javascript 正则表达式立即停止匹配,或者如果有逗号,javascript,regex,Javascript,Regex,我可能没有用最好的方式表达这个问题,但请容忍我 有这根绳子 select * from my_functions (in_p1 := remove, in_p2 := $1, in_p3 := remove, in_p4 := $2,

我可能没有用最好的方式表达这个问题,但请容忍我

有这根绳子

select * from my_functions (in_p1 := remove,
                                   in_p2 := $1,
                                   in_p3 := remove,
                                   in_p4 := $2,
                                   in_p5 := remove,
                                   in_p6 := $3,
                                   in_p7 := remove)
我需要使用
remove
关键字删除与检索匹配的参数


所以我构建了这个
text=text.replace(/,[^,]*?remove/g',)
,它适用于除
p1
之外的所有情况。我如何告诉它立即停止匹配,或者如果有逗号,只在逗号后停止?

由于需要在两个可能的位置删除逗号,我看到的使用单个正则表达式执行此操作的唯一选项是替换:

//                   vvvvvvvvvvvvv−−−−−−−−−−−−−−−−−−−−−−−−−−−−− first alternative
text = text.replace(/,[^,]*?remove|(?<=\()[^,]*?remove,/g, '');
//                                 ^^^^^^^^^^^^^^^^^^^^−−−−−−−− second alternative

你能依靠这些名字中的
in
前缀吗?不,有时它们没有前缀,这对我们人类来说可能很容易辨别,但是计算机如何知道它不应该与my_函数中的
select*的整体匹配(in_p1:=remove
?例如,参数都是由
[A-Za-z0-9]
组成的?
[A-Za-z0-9_]
我想我们可以假设是的,我刚刚意识到我说的不起作用……对不起!(如果你没有看到替代方法[no pun!]避免查找,请点击刷新。我添加了一个。)(也没有任何理由让非捕获组出现,这是一个编辑错误。我已经删除了它。)我选择了第一个,现在开始阅读关于lookbehind的文章。谢谢你!@Greggz-我的荣幸。这里有一个支持列表。基本上,除了Safari之外,现代浏览器也支持它们,但它还是相当新的。(Safari无疑会在某个时候增加支持。)Legacy Edge(v44和更早版本,由于Chromium Edge卷展栏是增量的,所以对于很多人来说,它仍然是当前的Edge),IE不支持它们。