这篇文章主要介绍了 javascript 的 replace 方法结合正则使用技巧, 实例总结了 replace 方法配合正则表达式进行变量、分组、字符等替换技巧, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文实例总结了 javascript 的 replace 方法结合正则使用方法。分享给大家供大家参考,具体如下:
replace() 方法用于在字符串中用一些字符替换另一些字符,或者替换一个正则表达式匹配的字符串
例子一:直接使用 repalce 替换
- var stringObj="终古人民共和国,终古人民";
- //替换错别字"终古"为"中国"
- //并返回替换后的新字符
- //原字符串stringObj的值没有改变
- var newstr=stringObj.replace("终古","中国");
- //中国人民共和国,终古人民
- alert(newstr);
例子二:使用正则表达式,全部替换
- var str="终古人民共和国,终古人民";
- var newstr=str.replace(/(终古)/g,"中国");
- //中国人民共和国,中国人民
- alert(newstr);
等价于
- var reg=new RegExp("终古","g"); //创建正则RegExp对象
- var stringObj="终古人民共和国,终古人民";
- var newstr=stringObj.replace(reg,"中国");
- alert(newstr);
例子三:正则表达式,变量匹配
- var resource="终古";
- var target="中国";
- var reg=new RegExp(resource,"g"); //创建正则RegExp对象
- var stringObj="终古人民共和国,终古人民";
- var newstr=stringObj.replace(reg,target);
- alert(newstr);
例子四:正则分组匹配
- var strM = "javascript is a good script language";
- //$1匹配的是javascript,$2匹配的是is
- //最终返回的值是"javascript is fun. it is" + strM
- //即javascript is 被替换为 javascript is fun. it is
- alert(strM.replace(/(javascript)\s*(is)/g,"$1 $2 fun. it $2"));
例子五:使用回调函数做详细处理
- var name="aaa bbb ccc";
- //name字符串去匹配/\b\w+\b/g表达式,结果有三个——aaa,bbb,ccc;每个结果执行function里面的方法
- var uw = name.replace(/\b\w+\b/g,function(word){
- //word是匹配的字符串
- alert(word);
- return word.substring(0,1).toUpperCase()+word.substring(1);
- });
- alert(uw);
例子六:比较生僻的写法
- var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx", "gmi");
- var url = "http://www.qidian.com/BookReader/1017141,20361055.aspx";
- //方式一,最简单常用的方式
- var rep = url.replace(reg, "$1ShowBook.aspx?bookId=$2&chapterId=$3");
- alert(rep);
- //方式二 ,采用固定参数的回调函数
- var rep2 = url.replace(reg,
- function(m, p1, p2, p3) {
- return p1 + "ShowBook.aspx?bookId=" + p3 + "&chapterId=" + p3
- });
- alert(rep2);
- //方式三,采用非固定参数的回调函数
- var rep3 = url.replace(reg,
- function() {
- var args = arguments;
- return args[1] + "ShowBook.aspx?bookId=" + args[2] + "&chapterId=" + args[3];
- });
- alert(rep3);
- function ReplaceDemo(){
- var r, re; // 声明变量。
- var ss = "The rain in Spain falls mainly in the plain.";
- // \s表示的是空格,则\S表示的是非空格,因此/(\S+)(\s+)(\S+)/g匹配的是"非空格空格非空格"的结果
- //匹配的结果有The rain、in Spain、falls mainly、in the
- //替换后的结果有rain The、Spain in、mainly falls、the in
- re = /(\S+)(\s+)(\S+)/g; // 创建正则表达式模式。
- //更改匹配结果之间的顺序
- r = ss.replace(re, "$3$2$1"); // 交换每一对单词。
- return(r); // 返回结果字符串。
- }
- alert(ReplaceDemo());
- name = "Doe, John";
- //更改两个单词之间的顺序
- var temp = name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
- alert(temp);
- function SDReplaceData(objStr)
- {
- return objStr.replace( /(\&|\')/g,
- function($0, $1)
- {
- return{
- "&" : "&"
- , "'" : "'"
- }[$1];
- }
- );
- }
希望本文所述对大家 JavaScript 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0303/264842.html