【发布时间】:2015-04-11 03:19:24
【问题描述】:
请正则表达式专家帮忙看看这个问题是否可以通过正则表达式解决:
给定字符串 1 是任意字符串
字符串 2 是包含字符串 1 的所有部分的任何字符串(但不是简单的匹配——我会举个例子)
如何使用正则表达式将字符串 2 中的字符串 1 的所有部分替换为空白,以便剩下的字符串不在字符串 1 中?
例如: str1 = "测试 xyz"; str2 = "测试 ab xyz"
我想要“ab”或“ab”回来。我可以编写什么正则表达式,这样当我在 str2 上运行替换函数时,它将返回“ab”?
这是一些非正则表达式代码:
function findStringDiff(str1, str2) {
var compareString = function(str1, str2) {
var a1 = str1.split("");
var a2 = str2.split("");
var idx2 = 0;
a1.forEach(function(val) {
if (a2[idx2] === val) {
a2.splice(idx2,1);
} else {
idx2 += 1;
}
});
if (idx2 > 0) {
a2.splice(idx2,a2.length);
}
return a2.join("");
}
if (str1.length < str2.length) {
return compareString(str1, str2);
} else {
return compareString(str2, str1);
}
}
console.log(findStringDiff("test xyz","test ab xyz"));
【问题讨论】:
-
我看不出正则表达式在这里有什么帮助。
-
顺便说一句,你在这里展示的算法会让
'$1.00'和'00.1$'之间看起来没有区别。 -
上面的代码甚至认为“ab”和“cd”是一样的。
-
预期输出是什么?
-
你能举出多个例子,不仅仅是一个字符的区别吗?目前还不清楚你想要什么。
标签: javascript regex