有难度的正则匹配 类似于语法高亮

wlfkongl 2008-03-10 01:43:47
  
<script type="text/javascript">
var sStr = "<html version=\"1.0\" onclick=\"none\">这个是\"正文\"内容这个是\"这里需要用红色\"内容<!--这个是\"这个是测试的\"注释-->";
sStr = sStr.replace(/</g,"<").replace(/>/g,">");
document.write(sStr+"<br />")
var reg = new RegExp("^(<)[^(>)](\"[^\"]*\")^(>)","g");
sStr = sStr.replace(reg,"<font color=\"red\">$1</font>");
alert(sStr);
document.write(sStr);
</script>

目的:仅仅吧<>标签以外的""双引号内容用红色标注,其他保留
...全文
186 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlfkongl 2008-04-14
  • 打赏
  • 举报
回复
怎么结贴???
muxrwc 2008-03-16
  • 打赏
  • 举报
回复
- -,说清楚嘛.

<div id="status1"></div>
<hr />
<div id="status2"></div>
<script type="text/javascript">
window.onload = function () {
var sStr = "<html version=\"1.0\" onclick=\"none\">这个是\"正文\"内容这个是\"这里需要用红色\"内容<!--这个是\"这个是测试的\"注释-->";
var pattern = /<(?:"[^"]*"|'[^']*'|[^"'>])*>|(.)/ig;
var a = [];

document.getElementById('status2').appendChild(document.createTextNode(
document.getElementById('status1').innerHTML =
sStr.replace(pattern, function (lastMatch, $1) {
if (!$1) {
return (
a.length > 0 ? '<span style="color:#F00;">' + a.splice(0, a.length).join('') + '<\/span>' : ''
) + lastMatch;
} else {
a[a.length] = $1;
return '';
}
})
)
);
};
</script>
wlfkongl 2008-03-15
  • 打赏
  • 举报
回复
不是需要5楼的效果,而是要实现
仅仅把 <> 标签以外的""双引号内容用红色标注,其他保留

3楼的接近了~~~呵呵~~

谢谢各位~~~

王集鹄 2008-03-15
  • 打赏
  • 举报
回复
5楼的效果是:
这个是"正文"内容这个是"这里需要用红色"内容
Atai-Lu 2008-03-11
  • 打赏
  • 举报
回复
...
弄了一个早上没弄出来,郁闷,闪人
changzhengxing 2008-03-11
  • 打赏
  • 举报
回复
你得整个惰性匹配


表达式 :("<s><sadas>asd<aaaaa><sadas>asdf<aaaaa></s>").match(/>([^<>]+?)</g);


结果: [">asd<", ">asdf<"]
zwd2005 2008-03-11
  • 打赏
  • 举报
回复
一般是逐字分析
faisun 2008-03-11
  • 打赏
  • 举报
回复
看看这个

http://www.softpure.com/html/show_details/37.htm
muxrwc 2008-03-11
  • 打赏
  • 举报
回复
只是0楼的需求的话..


<div id="status"></div>
<script type="text/javascript">
window.onload = function () {
var sStr = "<html version=\"1.0\" onclick=\"none\">这个是\"正文\"内容这个是\"这里需要用红色\"内容<!--这个是\"这个是测试的\"注释-->";
var pattern = /<(?:"[^"]*"|'[^']*'|[^"'>])*>|("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')/ig;
document.getElementById('status').innerHTML =
sStr.replace(pattern, function (lastMatch, $1) {
return !$1 ? lastMatch : $1.replace(/^(.)(.*).$/, function (lastMatch, $1, $2) {
return $1 + '<span style="color:#F00;">' + ($2 || '') + '<\/span>' + $1;
});
});
}
</script>
wlfkongl 2008-03-10
  • 打赏
  • 举报
回复
up
2008-03-10
  • 打赏
  • 举报
回复
up

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧