龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JavaScript正则表达式加亮关键字(js全部替换)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
JavaScript加亮原理――建立含有变量 的 正则表达式 通过JavaScript正则表达式来动态匹配查找页面指定区域 的 内容,在找出关键字之后替换成某个新 的 关键字。在替换后 的 关键字上添

JavaScript加亮原理――建立含有变量正则表达式

通过JavaScript正则表达式来动态匹配查找页面指定区域内容,在找出关键字之后替换成某个新关键字。在替换后关键字上添加字体颜色定义,即实现了关键字加亮。

实现过程

在JavaScript里我们很容易地建立一个正则表达式,其格式无非如此:

/expression/ 或 "expression"

其中,成对出现正斜杠(/)或小角引号(")作为边界符号,其内表达式(expression)为正则表达式具体内容。

通常,构造一个正则表达式,expression是具体、已知字串等东西,但是,实践中我们经常需要构造一个可以互动变化表达式,也就是说,用于替换脚本正则表达式是不确定,由用户根据需要自行决定,而我们不可能在后台为用户每一个选择建立一个独立正则表达式,为此,构造一个可包含变量正则表达式就必不可少。

在JavaScript里,构造一个可包含变量在内正则表达式可用如下方式:

re = new RegExp(expression,rule);

不难看出,式子里,expression为正则表达式构造内容,它不再受正斜杠和小角引号限制,可以是一个变量;rule为规则,其值为i或g或gi,为i时只匹配一次,g和gi则为全局变量,遍历匹配。

例如,我们要将字串中“苹果”全部变成“雪梨”,可如此实现:

str="苹果有大苹果小苹果之分"; //原字串
oldstr="苹果"; //待替换字串
newstr="雪梨"; //替换为字串
re=new RegExp(oldstr,"gi"); //建立正则表达式 - 全部替换
targetstr=str.replace(re,newstr); //替换后字串
document.write("替换前: " + str + "<br>替换后: " + targetstr);

执行以上代码,效果如下:

替换前: 苹果有大苹果小苹果之分
替换后: 雪梨有大雪梨小雪梨之分

理解了以上原理,我们就可以在此基础上拓展我们关键字加亮JavaScript代码了。

代码加亮示例

假设我们需要将文中正文部分所出现”字全部变为红色。

1、首先,我们要创建一个正则表达式匹配区域,这里我们在HTML页面中创建一个ID为"main"DIV容器层(此区域就是我们要加亮某个关键字内容区)。

<div id="main">匹配内容区</div>

2、接着我们创建一个JS函数并添加到HTML文档中,用于匹配和替换关键字:

function alter_text() {
   str=document.getElementById('main').innerHTML;//获取main区域中所有文字
   oldstr="";//定义要加亮字符串
   re=new RegExp(oldstr,'g');//创建含变量正则表达式
   newstr="<span style='color:red'>" + oldstr + "</span>";//将关键字替换成newstr形式
   targetstr=str.replace(re,newstr);//执行替换
   document.getElementById('main').innerHTML=targetstr;//重新输出替换后内容
}

3、添加一个链接标签<a>用于触发alter_text函数:

<a href="#" onclick=javascript:alter_text()>点击此处加亮</a>

4、结果演示:点击此处加亮本文正文部分出现”字。

精彩图集

赞助商链接