当前位置:编程学习 > JS >>

javascript 正则表达式触发函数进行高级替换

答案:一般情况下我们可能会用到正则表达式去替换文本:
复制代码 代码如下:

var a = "abc123aXc";
a.replace(/a.c/g, 'ZZ');

我们可以用函数来定义高级替换,而不是一个简单的字符串。比如:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

我们看到,当正则表达式每产生一次匹配时,会触发替换函数并将匹配字符串作为参数传到替换函数中。当正则表达式中定义了子匹配(submatch)时,甚至可以做更高级的事情,替换函数可以根据不同的子匹配来作出相应的处理。比如我们要对网页中的某些指定的实体代码转化为特殊字符:
[code]
var entity = {
quot: '"',
lt: '<',
gt: '>'
};
function deentityify(a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
}
var a = "<a href=>a.replace(/&([^&;]+);/g, deentityify);

执行结果为:

<a href=>如果我们知道了传递参数的规则就会很清楚其原理了。事实上,如果在正则表达式中定义了子匹配,那么参数的长度会随着子匹配的个数改变,如果没有定义子匹配,那么长度是固定的。传参的规则为:

匹配字符串本身
所有子匹配(如果定义了)
匹配字符串在原始字符串中的位置

上一个:js 翻转颜色实现代码
下一个:jQuery MD5加密实现代码

更多JS疑问解答:
几个验证11位手机号码格式的js代码
js如何获得FCKeditor控件的值
用js限制投票的cookie .目前设置的为:<input type="" class="" onclick="'window.location...
JS验证,这块“牛皮”反复修改都不能实现
在JS中使用DOM模型
如何用JS 获取本地文件夹的文件列表
js中new 了两个Object数组。怎么样将数组内容合并,重复的内容?
求实现自动生成图片缩略图的JS代码
JS脚本网页问题
js,代码中"object"和"Object"区别?
js+flash实现网页图片切换效果,出现边框,单击激活此控件。
JS怎样操作PHP中的参数
js 怎么在一打开页面就加载这个函数。
Date.parse()的问题(js)
<script src="/{maxcms:sitepath}js/common.js"></script>是什么意思
asp
php
Delphi
Matlab
JSP
Foxpro
JS
C/C++
C#/ASP.NET
VC++
JAVA
VB
汇编语言
html/css
CGI
XML/UML
wap
网站相关
网页素材
python
如果你遇到编程学习难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,