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