我正在尝试解析从文件加载的可自定义文本 block 。稍微简化一下,比方说,我正在尝试将大括号内出现的每个文本 block 转换为您可以单击以使用上述文本进行 javascript 警报的内容。
问题是,将 $1 传递到警报中。 $1 不像变量那样发挥作用。无论如何,一切都开始正常了:
var text='Information here: {Thanks for clicking the info link}';
text=text.replace(/{(.+)}/g,'[<span onclick=\"alert(\\'\$1\\')\">click me</span>]');
document.write(text);
到目前为止,一切都很好。我单击显示“[单击我]”的位置,然后消息“感谢您单击信息链接”作为 JavaScript 警报出现。
但有时我想将带有“或'的消息放入大括号中。
var text='Information here: {Thanks for clicking the "info" link}';
text=text.replace(/{(.+)}/g,'[<span onclick=\"alert(\\'\$1\\')\">click me</span>]');
document.write(text);
根本无法发出警报。如果我“查看选择源”,它会给出:
Information here: [<span onclick="alert('Thanks for clicking the " info"="" link')"="">click me</span>]
我尝试了各种转义“标记的组合,但没有任何乐趣。
我想用“替换”,但$1不是变量!
有什么想法吗?是的,我确实想这样做! :-)
谢谢!
最佳答案
使用单个 \
转义 '
,尽管不需要在单引号字符串内转义 "
。
var text='Information here: {Thanks for clicking the info link}';
text=text.replace(/{(.+)}/g,'[<span onclick="alert(\'$1\')">click me</span>]');
document.write(text);
关于javascript - 在 JavaScript 中使用 $1 作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415705/