字符串分隔符之间的Javascript正则表达式
我有以下字符串:字符串分隔符之间的Javascript正则表达式,javascript,regex,regex-greedy,Javascript,Regex,Regex Greedy,我有以下字符串: %||1234567890||Joe||% some text winter is coming %||1234567890||Robert||% 问题:我正在尝试匹配%|| |…| |%之间的所有匹配项并处理这些子字符串匹配 我的正则表达式:/%([\s\s]*?)(?=%)/g 我的代码 var a = "%||1234567890||Joe||% some text winter is coming %||1234567890||Robert||%"; var pat
%||1234567890||Joe||% some text winter is coming %||1234567890||Robert||%
问题:我正在尝试匹配%|| |…| |%之间的所有匹配项并处理这些子字符串匹配
我的正则表达式:/%([\s\s]*?)(?=%)/g
我的代码
var a = "%||1234567890||Joe||% some text winter is coming %||1234567890||Robert||%";
var pattern = /%([\s\S]*?)(?=%)/g;
a.replace( pattern, function replacer(match){
return match.doSomething();
} );
现在,模式似乎在选择第一次和最后一次出现的%||之间的所有内容||
我的
我需要的是:
我想对这些匹配进行迭代
%||1234567890 | |乔| |%
及
%||1234567890 | |罗伯特| |%
然后执行一些操作您需要在
字符串中使用回调#replace
并修改模式以仅匹配%|
和|%
中的内容,如下所示:
var a=“%| | 1234567890 | | |乔| | |%winter即将来临%| | | 1234567890 |罗伯特|%”;
var模式=/%\\\\\\([\s\s]*?)\\\\\\\\\\%/g;
a=a.replace(模式、功能(匹配、组1){
var chunks=group1.split(“| |”);
返回“{1}”+chunks.join(“-”+“{/1}”;
} );
控制台日志(a)代码>,因为他尽量多拿东西,[\s\s]基本上是“任何东西”的意思。所以他什么都拿
RegExp parts without escaping, exploded for readability
start tag : %||
first info: ([^|]*) // will stop at the first |
separator : ||
last info : ([^|]*) // will stop at the first |
end tag : ||%
Escaped RegExp:
/%\|\|([^\|]*)\|\|([^\|]*)\|\|%/g
尝试用/%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。然后使用a=a.replace(/pattern/g,函数($0,$1){return…;})
这个正则表达式不会匹配像%| | | 123456 | 7890 | |乔| |%
这样的值,您不应该在值中使用定界字符。但从给出的示例来看,这不会发生。从给出的示例来看,分隔符是一个2字符的字符串。简直太棒了!谢谢Wiktor:)