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

 更新时间:2010年03月15日 11:33:10   作者:  
如果在正则表达式中定义了子匹配,那么参数的长度会随着子匹配的个数改变,如果没有定义子匹配,那么长度是固定的。
一般情况下我们可能会用到正则表达式去替换文本:
复制代码 代码如下:

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="http://jb51.net/">";
a.replace(/&([^&;]+);/g, deentityify);

执行结果为:

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

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

相关文章

  • 原生JS实现表单checkbook获取已选择的值

    原生JS实现表单checkbook获取已选择的值

    本文为大家介绍下采用原生JS实现从一个表单checkbox获取到已选中的数据值,具体的实现如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助
    2013-07-07
  • JavaScript无提示关闭窗口(兼容IE/Firefox/Chrome)

    JavaScript无提示关闭窗口(兼容IE/Firefox/Chrome)

    JavaScript无提示关闭当前页面窗口,兼容IE/Firefox/Chrome (Close the current page window without confirm by JavaScript, support all browsers)
    2008-11-11
  • 一篇文章告诉你如何用事件委托实现JavaScript留言板功能

    一篇文章告诉你如何用事件委托实现JavaScript留言板功能

    这篇文章主要为大家介绍了事件委托实现JavaScript留言板功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 教你如何使用 JavaScript 读取文件

    教你如何使用 JavaScript 读取文件

    这篇文章主要介绍了如何使用 JavaScript 读取文件,您可以使用 JavaScript File API 加载选定文件的内容,本节介绍 File API 的基本用法,需要的朋友可以参考下
    2022-06-06
  • Lottie动画前端开发使用技巧

    Lottie动画前端开发使用技巧

    这篇文章主要为大家介绍了Lottie动画前端开发使用技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Javascript 两个窗体之间传值实现代码

    Javascript 两个窗体之间传值实现代码

    众所周知window.open() 函数可以用来打开一个新窗口,那么如何在子窗体中向父窗体传值呢,其实通过window.opener即可获取父窗体的引用。
    2009-09-09
  • jquery实现简单的遮罩层

    jquery实现简单的遮罩层

    这篇文章主要介绍了jquery实现简单的遮罩层相关代码,内容很丰富,教大家实现遮罩层效果,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • three.js显示中文字体与tween应用详析

    three.js显示中文字体与tween应用详析

    这篇文章主要给大家介绍了关于three.js显示中文字体与tween应用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • js导出Excel表格超出26位英文字符的解决方法ES6

    js导出Excel表格超出26位英文字符的解决方法ES6

    下面小编就为大家带来一篇js导出Excel表格超出26位英文字符的解决方法ES6。具有很好的参考价值。一起跟随小编过来看看吧,希望对大家有所帮助
    2017-11-11
  • html向js方法传递参数具体实现

    html向js方法传递参数具体实现

    html如何向js方法传递参数,在本文将为大家详细介绍下html注册事件向引用方法中的传参问题,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-08-08

最新评论