您当前的位置:首页 > 互联网教程

正则表达式替换字符串

发布时间:2025-05-21 22:01:53    发布人:远客网络

正则表达式替换字符串

一、正则表达式替换字符串

1、我觉得这里边主要有两个问题,特别容易让人产生误解:

2、从上图可以看出,这个正则其实有两轮匹配成功,在第一次匹配成功后,全局模式下,正则不会停止匹配,而是从上次匹配成功的位置开始,继续向后匹配.也就是说,第一轮匹配到 abc后,表达式会从 c和@之间这个位置重新开始匹配.

3、*,表示0个或多个,当*表示 0个的时候,其实匹配的是一个任意位置,也就是说,第二轮的时候.*成功匹配到了 c和@之间这个位置,而且这个位置同时满足(?=@.+)这个条件,这样整个表达式匹配成功,这样就被替换了两次.

4、.+这种情况,至少匹配一个字符,无法匹配位置,所以在第一轮匹配成功后,就没有办法再匹配到其他部份了.

二、js正则表达式替换字符串(将代码片段1用js正则替换成字片段2)

在js中如何将字符串'abdAca'中所有a和A字符替换成B?

通高蠢过正则表达式和replace对所有字符a和A进行替换。

通高蠢过正则表达式和replace对所有字符a和A进行替换。

var?str?=?'abdAca';//定义一个字符串

alert(str.replace(new?RegExp('a','gi'),'B'));//通过正则表达式进行替换

RegExp:正则表达式对象,第一个参数表示要替换的字符,第二个参数gi中g表示全迅孝局戚昌陪匹配,i表示忽略大小写。

replace:替换字符串,第一个参数,被替换的字符串,第二个参数要替换的字符串

js正则表达式是什么?

在JavaScript中,正则表达式通常用于两个字符串方法:search()和replace()。

在JavaScript中,正则表达式通常用于两个字符串方法:search()和replace()。

search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。源轿睁

replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

1、灵活性、帆中逻辑性和功能性非常强;

2、可以迅速地用极简单的方式达到字符串的复杂控制。

3、对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编雹岁辑器场合都有应用,小到著名编辑器EditPlus,大到MicrosoftWord、VisualStudio等大型编辑器,都可以使用正则表达式来处理文本内容。

JS字符串替换函数:Replace(“字符串1″,“字符串2″),?1.我们都知道JS中字符串替换函数是Replace(“字符串1″,“字符串2″),但是这个函数只能将第一次出现的字符串1替换掉,那么我们如何才能一次性全部替换掉了??script?vars="LOVELIFE!LOVEJAVA...";?alert(s);?alert(s.replace("LOVE","爱"));?alert(s.replace(/\LOVE/g,"爱"旦梁));?/script

functionformatStr(str)?{?str=str.replace(/\r\n/ig,"br/");?returnstr;?}?要注意两点:?要使用正则表达式,不能使用str.replace("\r\n",newString);,这会导致只替换第一个匹配的子字符串。?母字符串中不一定\r\n会同时存在,也许只有\n,没有\r也是可能的。?replace方法的语法是:stringObj.replace(rgExp,replaceText)其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。为了帮助大家更好的理解,下面举个简单例子说明一下??Js代码?scriptlanguage="javascript"?varstringObj="终古人民共和国,终滚中古人民";???//替换错别字“终古”为“中国”?//并返回替换后的新字符?//原字符串stringObj的值没有改变?varnewstr=stringObj.replace("终古","中国");?alert(newstr);?/script???比我聪明的你,看完上面的例子之后,会发现第二个错别字“终古”并没有被替换成“中国”,我们可以执行二次replace方法把第二个错别字“终古”也替换掉,程序经过改进之后如下:??Js代码?scriptlanguage="javascript"?varstringObj="终古人民共和国,终古人民";???//替换错别字“终古”为“中国”?//并返回替换后的新字符?//原字符串stringObj的值没有改变?varnewstr=stringObj.replace("终古","中国");???newstr=newstr.replace("终古","中国");?alert(newstr);?/script???我们可以仔细的想一下,如果有N的N次方个错别字,是不是也要执行N的N次方replace方法来替换掉错别字呢??呵,不用怕,有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下??Js代码?scriptlanguage="javascript"?varreg=newRegExp("终古","g");//创建正则RegExp对象?varstringObj="终古人民共和国,终古人民";?varnewstr=stringObj.replace(reg,"中国");?alert(newstr);?/script?上面讲的是replace方模备运法最简单的应用,不知道大家有没有看懂??下面开始讲稍微复杂一点的应用。。??大家在一些网站上搜索文章的时候,会发现这么一个现象,就是搜索的关键字会高亮改变颜色显示出来??这是怎么实现的呢??其实我们可以用正则表达式来实现,具体怎么样实现呢?简单的原理请看下面的代码??Js代码?scriptlanguage="javascript"?varstr="中华人民共和国,中华人民共和国";?varnewstr=str.replace(/(人)/g,"fontcolor=red$1/font");?document.write(newstr);?/script?上面的程序缺少互动性,我们再改进一下程序,实现可以自主输入要查找的字符??Js代码?scriptlanguage="javascript"?vars=prompt("请输入在查找的字符","人");?varreg=newRegExp("("+s+")","g");?varstr="中华人民共和国,中华人民共和国";?varnewstr=str.replace(reg,"fontcolor=red$1/font");?document.write(newstr);?/script??可能大家都会对$1这个特殊字符表示什么意思不是很理解,其实$1表示的就是左边表达式中括号内的字符,即第一个子匹配,同理可得$2表示第二个子匹配。。什么是子匹配呢??通俗点讲,就是左边每一个括号是第一个字匹配,第二个括号是第二个子匹配。。??当我们要把查找到的字符进行运算的时候,怎么样实现呢??在实现之前,我们先讲一下怎么样获取某一个函数的参数。。在函数Function的内部,有一个arguments集合,这个集合存储了当前函数的所有参数,通过arguments可以获取到函数的所有参数,为了大家理解,请看下面的代码??Js代码?scriptlanguage="javascript"?functiontest(){??alert("参数个数:"+arguments.length);??alert("每一个参数的值:"+arguments[0]);??alert("第二个参数的值"+arguments[1]);??//可以用for循环读取所有的参数?}???test("aa","bb","cc");?/script?看懂上面的程序之后,我们再来看下面一个有趣的程序??Js代码?scriptlanguage="javascript"?varreg=newRegExp("\\d","g");?varstr="abd1afa4sdf";?str.replace(reg,function(){alert(arguments.length);});?/script???我们惊奇的发现,匿名函数竟然被执行了二次,并且在函数里还带有三个参数,为什么会执行二次呢??这个很容易想到,因为我们写的正则表达式是匹配单个数字的,而被检测的字符串刚好也有二个数字,故匿名函数被执行了二次。。在匿名函数内部的那三个参数到底是什么内容呢??为了弄清这个问题,我们看下面的代码。??Js代码?scriptlanguage="javascript"?functiontest(){?for(vari=0;iarguments.length;i++){???alert("第"+(i+1)+"个参数的值:"+arguments);?}?}?varreg=newRegExp("\\d","g");?varstr="abd1afa4sdf";?str.replace(reg,test);?/script???经过观察我们发现,第一个参数表示匹配到的字符,第二个参数表示匹配时的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串(RegExp.input)。其实这些参数的个数,还会随着子匹配的变多而变多的。弄清这些问题之后,我们可以用另外的一种写法??Js代码?scriptlanguage="javascript"?functiontest($1){??return"fontcolor=’red’"+$1+"/font"?}?vars=prompt("请输入在查找的字符","人");?varreg=newRegExp("("+s+")","g");?varstr="中华人民共和国,中华人民共和国";?varnewstr=str.replace(reg,test);?document.write(newstr);?/script?看了上面的程序,原来可以对匹配到的字符为所欲为。下面简单举一个应用的例子??Js代码?scriptlanguage="javascript"?varstr="他今年22岁,她今年20岁,他的爸爸今年45岁,她的爸爸今年44岁,一共有4人"?functiontest($1){??vargyear=(newDate()).getYear()-parseInt($1)+1;??return$1+"("+gyear+"年出生)";?}?varreg=newRegExp("(\\d+)岁","g");?varnewstr=str.replace(reg,test);?alert(str);?alert(newstr);?/script

replace函数一次只能替换一个目标字符串,可以配合while循环替换所有字符串。

1、在script标签中定义一个字符串,字符串内容为“一个中国北方的中国人在做中国结”,然后将内容输出在网页中:

2、使用replace函数,这时第一个“中国”文本被空字符串替换,但是还有两个“仔团中国”文本没有被替换:

3、添加while循环,循环条件用“indexOf”函数来判断是否“中国”两个字还存在,如果存在则继续念迟橘替换,不存在则结束旦团,这时所有的目标字符串都被替换完成:

你的闷悄目的是把D2E3F4的值相加明笑,得到他们的和。这个激罩含不需要替换的,js数字直接相加就可以。

varstr=parseInt(D2)+parseInt(E3)+parseInt(F4);//parseInt是把字符转数字

这样str的值就是D2E3F4相加的结果。

三、正则表达式“或“的使用

正则表达式,又称规则表达式。是计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:

String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。

所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:

String str="zhangsan,lishi,wangwu"。

String reg=",";//表示以逗号作为切割符。

String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。

即将字符串中符合规则的字符替换成指定字符,如:

String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。

str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。

参考资料来源:百度百科-正则表达式