Javascript 正则表达式替换撇号和#x27之间的所有QOUTE;s

Javascript 正则表达式替换撇号和#x27之间的所有QOUTE;s,javascript,regex,Javascript,Regex,我正在使用javascript和经典asp,我希望有人能帮助我使用这个正则表达式 我需要换一个 “(引述) 在撇号和正则表达式之间 我是这样想的,但这会用引号替换整个字符串吗 textarea = textarea.replace(/\'.*?\'/ig, '&quote;'); 这是文本“单击此处”,而不是,我需要它 'this is the text "&quote;click here&quote;' 我相信任何人都能帮忙 谢谢,仅供参考,你不能用一个正则表达式

我正在使用javascript和经典asp,我希望有人能帮助我使用这个正则表达式

我需要换一个

“(引述)

在撇号和正则表达式之间

我是这样想的,但这会用引号替换整个字符串吗

textarea = textarea.replace(/\'.*?\'/ig, '&quote;');
这是文本“单击此处”,而不是
我需要它

'this is the text "&quote;click here&quote;'
我相信任何人都能帮忙


谢谢,仅供参考,你不能用一个正则表达式来实现这一点,而且要做到万无一失。原因是正则表达式不能跟踪状态,所以如果你的整个字符串是

'"test"' "test" '"test"'
正则表达式无法知道第二个引用的
测试不应该被替换


为此,您需要首先匹配
/'([^\']+)/
,然后替换每个匹配中的所有引号。替换/(\“/g'”)
首先,您需要通过放置
()
围绕它。然后在替换方法中,您可以使用
$1
表示第一个捕获组,
$2
表示第二个捕获组,等等。因此,换句话说,您可以执行以下操作:

textarea.innerHTML = textarea.innerHTML
                             .replace(/'(.*?)"(.*?)"(.*?)'/g,
                                      "'$1&quote;$2&quote;$3'");
我以为您想用"e;而不是“角色”,但如果需要,您可以轻松替换它


是的,您将需要多个正则表达式。假设您不想处理转义引号,此测试函数可用于您的测试数据:

功能处理\u数据(文本)
{//将双引号转换为单引号字符串中的HTML实体。
var re_dsq=/(“[^”]*”)(“[^”]*”)/g;/$1=“string”或$2='string”
var re_dq=/“/g;//单个”
text=text.replace(重新安装dsq,功能(m0,m1,m2){
如果(m1)返回m1;
返回m2。更换(重新安装dq“”);
});
返回文本;
}

如果您确实需要处理带有转义引号的字符串,则可以轻松修改正则表达式。

我100%确定所有引号都在“这是文本”之间单击此处“‘撇号’实际上,我认为它并不完全正确。当你使用正则表达式以单引号匹配字符串时,它会检查第一个和第三个-因为第二个的开头是第一个的一部分,所以它不会匹配(伙计,这是一个复杂的解释!)。我正在写一个mysql insert语句,在字符串外有引号,我不想替换。。。我只想替换介于“”之间的(两个撇号),我不想替换外部的…@Gerald,我希望您不允许用户使用JavaScript发送(和修改)mysql查询!你说得对,需要两个正则表达式。但是如果您有类似以下内容,则上面的正则表达式:
/'([^\']+)'/
会中断:
“那不像”我的“字符串!”。我的解决方案将处理此问题。“我不希望被替换”,word“这是文本”click here“,根据您的示例,这是结果应该是“我不希望被替换”,word“这是文本"e;单击此处"e;'