0
我正在JavaScript中編寫PHP語法高亮顯示代碼。這是我曾嘗試:JavaScript - 全局修飾符無法正常工作
<html>
<head>
<title>Untitled 1</title>
<script>
function showContents(text) {
var string = /\"[[email protected]#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*\"/i;
var aVariable = /\$([a-zA-Z0-9_\x7f-\xff]*)/i;
var output = text;
if(aVariable.test(output)==true)
{
output = output.replace(aVariable.exec(output)[0],"<font color='blue'>"+aVariable.exec(output)[0]+"</font>");
document.getElementById("UserInput").innerHTML = output;
}
if(string.test(output)==true)
{
output = output.replace(string.exec(output)[0],"<font color='red'>"+string.exec(output)[0]+"</font>");
document.getElementById("UserInput").innerHTML = output;
}
else
{
document.getElementById("UserInput").innerHTML = output;
}
document.write(output);
}
</script>
</head>
<body>
<div id="UserInput"></div>
<form>
<textarea onkeyup="showContents(this.value)"></textarea></form>
</body>
</html>
上述腳本就像是做工精細的輸入:
$name="ABC"
但是,如果我嘗試輸入等:
$name="ABC";$name2="CDE"
該代碼僅突出顯示第一個實例(即$name="ABC"
)。將修改器更改爲全局不會給出輸出本身。
一旦你做了第一次替換,你有一個HTML字符串,而不是純文本字符串。然後[它不再可能使用正則表達式來解析它](http://stackoverflow.com/a/1732454/1529630),以便做更多的替換。你需要一個合適的解析器,而不是正則表達式。 – Oriol