我有一个要删除其中一部分的字符串。
1)下面是字符串(加密的消息)
@@ _ / profiles / c3ed4acd-b3be-487e-81b4-a27643745d ^^ ____ User1 __ @@@ ^^^^向@@ _ / profiles / d3ac3c5a-8a9f- 4640-8563-127674d93e ^^ ____ User2 __ @@@@ ^^^
我想从这件事中总结出以下两点
a)字符串
@ User1对@ User2说
2)像这样的json对象
{
"c3ed4acd-b3be-487e-81b4-a27643745d":"User1",
"d3ac3c5a-8a9f-4640-8563-127674d93e":"User2"
}
首先,我尝试获取字符串,并使用以下使用正则表达式的方法
我已经这样尝试过了
var str = "@@___/profiles/c3ed4acd-b3be-487e-81b4-a27643745d__^^____User1__@@@^^^ says to @@___/profiles/d3ac3c5a-8a9f-4640-8563-127674d93e__^^____User2__@@@^^^"
var rx = /(^@@___|,@@@^^^)/; // start with @@___ and end with @@@^^^
var expectedString = str.replace(/(^@@___|,@@@^^^)/g, "");
console.log(expectedString);
但这只是替换
的首次出现答案 0 :(得分:1)
您的代码中存在一些基本问题
^
字符转义为\^
rx
变量|
表示或不以开头和结尾尝试一下:
// a)
var str = "@@___/profiles/c3ed4acd-b3be-487e-81b4-a27643745d__^^____User1__@@@^^^ says to @@___/profiles/d3ac3c5a-8a9f-4640-8563-127674d93e__^^____User2__@@@^^^"
var rx = /@@___([^_]+)__\^\^____([^_]+)__@@@\^\^\^/g;
var expectedString = str.replace(rx, "@$2");
console.log(expectedString);
// b)
var list = {};
while ((m = rx.exec(str)) !== null) {
if (m.index === rx.lastIndex) {
rx.lastIndex++;
}
list[m[1]] = m[2];
}
console.log(list);