我在Javascript中有这些字符串:
var string1 = '#23 the id of this report is \\# 23';
var string2 = '# \\# \\# # \\\\# #';
我想要.replace()
替换所有 #
,而不是 \\
>使用\\#
,但无法写出正确的正则表达式。
string2
的结果应为\\# \\# \\# \\# \\\\# \\#
有什么想法吗?
工作解决方案:
答案 0 :(得分:2)
尝试使用此替换功能
.replace(/[\\]{0,1}#/g, "\\#")
<强>样本强>
var string1 = '#23 the id of this report is \\# 23';
alert(string1.replace(/[\\]{0,1}#/g, "\\#"));
var string2 = '# \\# \\\# \# \\\\# #';
alert(string2.replace(/[\\]{0,1}#/g, "\\#"));
var string3 = '# \\# \\# # \\\\# #';
alert(string3.replace(/[\\]{0,1}#/g, "\\#"));
&#13;
答案 1 :(得分:1)
答案 2 :(得分:1)
您可以通过在它们之前首先匹配哈希标记与反斜杠来定位没有反斜杠的哈希标记,然后作为替代方法(使用交替运算符,也称为管道,{{1} })自己尝试一个哈希标记,因此它会匹配哈希标记之前没有反斜杠,并在任何一种情况下用|
替换:
\#
&#13;
var string2 = '# \\# \\# # \\\\# #';
var maybe_escaped = /\\#|#/g;
var result = string2.replace(maybe_escaped, '\\#');
document.getElementById('result').textContent = JSON.stringify(result);
&#13;
另一种方法就是使用以下正则表达式,尽管上面的一个可能被认为更好地体现了问题的负面后视性质,并且更具概括性。
<div id='result' style="font-family: monospace; "></div>