我正在尋找一個單線程正則表達式,該表達式應將所有雙引號轉換爲括號內存在的單引號。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