我正在寻找一个单线程正则表达式,该表达式应将所有双引号转换为括号内存在的单引号。RegEx将所有双引号替换为括号中的单引号
例:
<span onclick="javascript:myfunction("param(s)1", "param(s)2")"
我想上面的一个转换为
<span onclick="javascript:myfunction('param(s)1', 'param(s)2')"
我在正则表达式的新手。请帮忙!
我正在寻找一个单线程正则表达式,该表达式应将所有双引号转换为括号内存在的单引号。RegEx将所有双引号替换为括号中的单引号
例:
<span onclick="javascript:myfunction("param(s)1", "param(s)2")"
我想上面的一个转换为
<span onclick="javascript:myfunction('param(s)1', 'param(s)2')"
我在正则表达式的新手。请帮忙!
这似乎是你真的想取代双引号,那这里面的双引号:
function replace_inside_quotes(str) {
var regex_quotes = /"(.*)"(.*)"(.*)"/;
while(regex_quotes.test(str)) {
str = str.replace(regex_quotes, '"$1\'$2\'$3"');
}
return str;
}
这会如果字符串变得太长,会有很大的性能问题。请参阅:http://www.regular-expressions.info/catastrophic.html – 2013-02-11 17:10:29
一个功能,将做到这一点:
function replaceQuotes(inputString)
{
var output = '';
var inbrackets = 0;
for (i = 0; i < inputString.length; i++)
{
var currentChar = inputString.charAt(i);
switch (currentChar)
{
case '\"':
if (inbrackets > 0)
output += '\'';
else
output += '\"';
break;
case '(':
inbrackets++;
output += '(';
break;
case ')':
inbrackets--;
output += ')';
break;
default:
output += currentChar;
break;
}
}
return output;
}
如果你是想过程完整的HTML你会遇到比这更精致的东西。
因为括号可以嵌套,所以你不能在正则表达式中这样做。 – SLaks 2013-02-11 16:27:41
你将不得不编写自己的解析器。正则表达式只能解析正则语言。处理托槽平衡不够好。 – 2013-02-11 16:29:43
您应该替换或转义它们_before_内容呈现为双引号('=“”')。我假设你使用了一些服务器端脚本。 – marekful 2013-02-11 16:30:00