Javascript 正则表达式替换撇号和#x27之间的所有QOUTE;s
我正在使用javascript和经典asp,我希望有人能帮助我使用这个正则表达式 我需要换一个 “(引述) 在撇号和正则表达式之间 我是这样想的,但这会用引号替换整个字符串吗Javascript 正则表达式替换撇号和#x27之间的所有QOUTE;s,javascript,regex,Javascript,Regex,我正在使用javascript和经典asp,我希望有人能帮助我使用这个正则表达式 我需要换一个 “(引述) 在撇号和正则表达式之间 我是这样想的,但这会用引号替换整个字符串吗 textarea = textarea.replace(/\'.*?\'/ig, '"e;'); 这是文本“单击此处”,而不是,我需要它 'this is the text ""e;click here"e;' 我相信任何人都能帮忙 谢谢,仅供参考,你不能用一个正则表达式
textarea = textarea.replace(/\'.*?\'/ig, '"e;');
这是文本“单击此处”,而不是,
我需要它
'this is the text ""e;click here"e;'
我相信任何人都能帮忙
谢谢,仅供参考,你不能用一个正则表达式来实现这一点,而且要做到万无一失。原因是正则表达式不能跟踪状态,所以如果你的整个字符串是
'"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;'