我有一个关于我用JavaScript编写的正则表达式的快速问题。以下是(?<=,)(.*)(?=:)
,它捕获了,
和:
之间的所有内容。但是,我希望它也能捕获逗号本身。
So,<< this is what my regex captures at the moment>>: end
将成为
So<<, this is what my regex captures at the moment>>: end
。
我尝试在正则表达式中的.
之前使用,
,但似乎不起作用。
答案 0 :(得分:0)
使用一个简单的捕获组-它比您当前的正则表达式短,并且效果很好:
var regex = /(,.*?):/g;
var string = "So,<< this is what my regex captures at the moment>>: end";
console.log(string.match(regex));
说明:
()
-表示捕获组
,
-匹配逗号
.?*
-匹配任意数量的字符
:
-匹配逗号
答案 1 :(得分:0)
假设双箭头用于指示当前模式匹配的开始和结束,则可以使用负字符类来匹配逗号,然后匹配1+倍而不是逗号:
,[^:]+
如果末尾的逗号应该存在,则可以使用捕获组:
(,[^:]+):
您可以仅通过匹配冒号来省略正向(?=:)
,因为您已经在使用捕获组来进行匹配。
const regex = /(,[^:]+):/;
const str = `So,<< this is what my regex captures at the moment>>: end`;
let res = str.match(regex);
console.log(res[1]);
答案 2 :(得分:0)
如您所说:
所以,<<这是我的正则表达式当前捕获的内容>>:end将变成 所以<<,这是我的正则表达式当前捕获的内容>>:结束。
您可以像这样使用replace
:
var str = `So,<< this is what my regex captures at the moment>>: end`;
var replace = str.replace(/(.*?)(,)(<<)(.*)/,"$1$3$2$4");
console.log(replace);