跳转到主内容
极星编程网:以代码为星,赴技术山海!

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

一般情况下我们可能会用到正则表达式

去替换文本:

perl正则表达式学习手册pdf版perl正则表达式学习手册pdf版,点击下载解压即可。想学习perl正则的朋友需要看。

下载复制代码代码如下:var a = "abc123aXc";a.replace(/a.c/g, 'ZZ');我们可以用函数来定义高级替换,而不是一个简单的字符串。比如:[/code]执行结果为:复制代码代码如下:www 15bj ten[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.replace(/&([^&;]+);/g, deentityify);

执行结果为:

如果我们知道了传递参数的规则就会很清楚其原理了。事实上,如果在正则表达式中定义了子匹配,那么参数的长度会随着子匹配的个数改变,如果没有定义子匹配,那么长度是固定的。传参的规则为:匹配字符串本身所有子匹配(如果定义了)匹配字符串在原始字符串中的位置

相关文章