我有一个程序,允许用户在文本框中键入JavaScript,并在HTML查看器或iframe中执行。有一个下拉列表,其中包含插入
的“插入图像”等选项var $'Image Name' = document.createElement('img');
$'Image Name'.src = $'Image URL';
$'Image Name'.style.position = 'absolute';
document.body.appendChild($'Image Name');
进入文本框。我希望用户选择“插入图像”选项,然后让每个$''
都有一个对话框,并要求替换它们,因此对于第一个$'Image Name'
,提示用户输入变量名,然后replace("$'Image Name'", userText)
,以便更换所有$'Image Name'
,并且不会再次提示用户输入相同的名称。有任何想法吗?我有这个替换:
replace(/^\$\"|\'.$\"|\'/gi, function ($string) { return prompt($string);});
但它匹配引号,而不是引号内的文本,我甚至不知道正则表达式,如果你能解决正则表达式,我可以弄清楚其余部分。
答案 0 :(得分:0)
我猜你想要这样的东西:
replace(/\$'([^']+)'/g, function (s, contents) { return prompt(contents); });
虽然我应该提一下,如果单引号字符串恰好以美元符号结尾,或者双引号字符串碰巧包含$'
,或者诸如此类,那么这将会出错;你需要能够处理这些案件吗? (从您的问题来看,您是否完全控制textarea的内容,或者您的用户是否正在编辑内容,这一点并不明显。)