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

执行结果为:

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

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



相关阅读:
IP地址输入框
jQuery实现的类flash菜单效果代码
ASP.NET中利用Segments取得URL的文件名的一种方法分享
使用Axis开发Web Service程序
网页缓冲效果特效代码
asp.net下用url重写URLReWriter实现任意二级域名的方法
HTML表格标记教程(5):亮边框色属性BORDERCOLORLIGHT
来自PHP.NET的入门教程
JS延迟加载(setTimeout) JS最后加载
MySQL数据导入导出方法与工具(2)
如何用Windows 7开启或关闭屏幕键盘
CSS实现 Firefox 和 IE 都支持的半透明效果
CSS Border属性制作小三角
CSS教程:制作对用户友好的站内搜索表单
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 元夕无月 女生哲理爱情签名的句子 《初》—过客 人生何止是一场战斗 信访办述职报告 一次激烈的抢橡皮比赛作文750字 走过她走的路 幼儿教育《孩子在犯错时候》 不同的命运500字 笑灵传第十七章作文2800字 五一快乐短信 餐饮收银员工作职责 定风波读后感 街道城管工作总结 邂逅缘分 做花灯作文 我也学会了骑自行车600字 和鸭私奔去 冬日,这一缕温暖的阳光 潼南,我为你喝彩 顶岗支教实习总结报告 打工“三人行” 爱情你懂吗? 赞助策划书格式 提升高职学生职业生涯规划主体性对策的思考 庄稼人 15年6月思想汇报范文:树立正确人生目标 神奇的多功能鞋作文600字 我一直没告诉你,我很爱你 我在深秋里想你 《烽火戏诸侯》褒姒的笑作文400字 情深作文1300字 辉煌60年作文500字 街道人大代表开展双争活动情况汇报 花落时分你还爱吗 怀念起小时候过年的情景 初中初一作文650字:参观航空母舰 Yahoo!创始人:杨致远 秋天的行板——致远方的你 路边飘来的那缕香作文500字 经济系会计专业求职信 极力的掩饰着… 小学六年级作文600字:老师,我崇拜您(汤静) 长夜思 《设计你的人生》经典语录 洋溢的爱作文500字 魅力之夏作文800字 三年级试卷:小学语文第六册期末复习一(2003、5) 竹里梅 广场消夏夜

Copyright © 2016 phpStudy |