正则表达式替换撇号之间的所有qoutes
我正在使用JavaScript和经典的ASP,我希望有人可以帮助我这个正则表达式。正则表达式替换撇号之间的所有qoutes
我需要更换
“(引号)
撇号与正则表达式之间。
我在这行所想,但是这将取代整个字符串与报价?
textarea = textarea.replace(/\'.*?\'/ig, '"e;');
而不是'this is the text "click here"'
我需要它是
'this is the text ""e;click here"e;'
我任何机构可以帮助
感谢
首先,你需要通过把()
围绕它把你变成.*?
捕获组。然后在替换方法,你可以使用$1
代表第一个捕获组,$2
代表第二个,等等。所以,换句话说,你会怎么做:
textarea.innerHTML = textarea.innerHTML
.replace(/'(.*?)"(.*?)"(.*?)'/g,
"'$1&quote;$2&quote;$3'");
我假设你想更换“字&报价,而不是字符& QUOT;但是你可以很容易地更换,如果有必要
仅供参考,你不能用一个单一的正则表达式做到这一点,并把它做到万无一失。其原因是,正则表达式无法跟踪状态,所以如果你满弦是一样的东西
'"test"' "test" '"test"'
有没有办法为正则表达式知道引述test
第二不应该被更换。
要做到这一点,你需要的第一场比赛/'([^\']+)'/
,然后执行更换所有报价每场比赛里面.replace/(\"/g, '"')
我100%确定所有的引号介于'这是文本'点击这里''撇号的 – 2011-03-22 00:18:33
其实,我不认为它完全正确。当你使用正则表达式来匹配单引号中的字符串时,它会检查第一个和第三个 - 因为第二个的开始是第一个的一部分,所以它不会匹配(man,这是一个复杂的解释!)。 – Czechnology 2011-03-22 00:20:46
我正在写一个mysql插入statemet有引号outsite字符串,我不想取代...我只想取代之间的''(两个apostophe的)外面我不想取代... – 2011-03-22 00:23:55
是的,你需要一个以上的正则表达式假设你不想。处理逃脱的报价,这个测试f在您的测试数据结作品:
function process_data(text)
{ // Convert double quotes to HTML entity inside single quoted strings.
var re_dsq = /("[^"]*")|('[^']*')/g; // $1 = "string" or $2 = 'string'
var re_dq = /"/g; // A single "
text = text.replace(re_dsq, function(m0, m1, m2) {
if (m1) return m1;
return m2.replace(re_dq, '"');
});
return text;
}
如果你需要处理有逃脱引号中的字符串,正则表达式可以很容易地修改。
不错的例子 - 我喜欢这个工具... – 2011-03-22 00:27:40
按照你的例子这是什么结果应该是 – 2011-03-22 00:30:34
示例和代码更新并更正。 – mVChr 2011-03-22 00:34:54