摘要:字符串方法还是比较强大的,做个笔记总结。美元符号连字符与正则表达式相匹配的子字符串。美元符号单引号位于匹配子字符串右侧的文本。否则,第至个参数对应为捕获组匹配项,倒数的两个参数为匹配下标,原串。函数的匹配返回值,作为每次的匹配替换值。
javascript字符串方法replace还是比较强大的,做个笔记总结。
第一个参数replace的第一个参数为字符串或者正则表达式。第二个参数为替换符,或者一个回调函数。
javascript"aadbbbd".replace("a","1") //"1adbbbd" "aadbbbd".replace(/a/,"1") //"1adbbbd"第二个参数
1.第二个参数为特殊符号
$1、$2、…、$99:与正则表达式中的第1~99个子表达式相匹配的文本。其实也可以在1-9之间,加上0前缀。
该符号针对的是分组,所以,没有分组的话,会被当做$n字符来做替换。
$&:(美元符号+连字符):与正则表达式相匹配的子字符串。
$`:(美元符号+切换技能键):位于匹配子字符串左侧的文本。
$":(美元符号+单引号):位于匹配子字符串右侧的文本。
$$:表示$符号。
代码示例:
javascript"中国人民".replace(/(中国)/g,"($1)") //"(中国)人民" "cdab".replace(/(ab)/g,"$`") //"cdcd" "abcd".replace(/(ab)/g,"$"") //"cdcd" "abcdabcd".replace(/(ab)/g,"[$&]") //"[ab]cd[ab]cd" "$1$2wa,test".replace(/[a-zA-z]/g,"$$"); //"$1$2$$,$$$$"
如果有10个分组,但是我想在匹配第一个分组的后面加个0,怎么办?
也就是说,怎么让js去做10和1的区分?
用事实说话:
javascript"abcdefghijkkkk".replace(/(a)/g,"$10") //"a0bcdefghijkkkk" "abcdabcd".replace(/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)/g,"$10") //"jkkkk"
这个有点为难了,但是却难不倒函数啊!
2.第二个参数为函数
如果第二个参数传入函数,那么,正则表达式没有定义捕获组的情况下,默认为三个参数,分别为:matched(匹配子串),匹配下标,原串(originalText)。否则,第2至n个参数对应为捕获组匹配项,倒数的两个参数为:匹配下标,原串(originalText)。
函数的匹配返回值,作为每次的匹配替换值。
javascript"123".replace(/d/g,function(m1,m2,m3){ return m3+"#" }) //"123#123#123#" "abcdeffffdabc12323abc".replace(/[abc]/g,function(matched,index,originalText){ return matched+"~" }) //"a~b~c~deffffda~b~c~12323a~b~c~" "abcdeffffdabc12323abc".replace(/[abc]/g,function(matched,index,originalText){ return "~" }) //"~~~deffffd~~~12323~~~" "abcdeabc".replace(/[ab]/g,function(matched,index,originalText){ return "["+index+"]"; }) //"[0][1]cde[5][6]c"
接下来,我们来做个题目,要求对一个串的重复部分进行替换处理,比如:abcabcaabbbdd,该串中abc紧接着abc,a后紧接着a,无论重复多少次,我们都用#替换掉。
javascript//因为有一个捕获组,所以,需要再传递1参数 $1 "abcaabbccccffffdabcabcef".replace(/(w+)1+/g,function(matched,$1,index,originalText){ return "#"; }) //"abc#####ef"
如果只是保留非重复部分,也就是紧连接的aaa,只需要保留a即可。那么我们可以这么改:
javascript"abcaabbccccffffdabcabcef".replace(/(w+)1+/g,function(matched,$1,index,originalText){ return $1; }) //"abcabccdabcef"
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78177.html
摘要:返回值返回值根据传入的参数类型和规则的不同,返回的内容不同,但总体来说,它是返回一个对象,而不是索引,如果没匹配到任何符合条件的字符串,则返回。 本文发布在我的博客一道小小的题目引发对javascript支持正则表达式相关方法的探讨许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。 以前对于正则是非常惧怕的,因为看不懂和学不会。但最近项目中频繁的...
摘要:对应于上述的,等。匹配到的子字符串在原字符串中的偏移量。插入当前匹配的子串右边的内容。 javascript这门语言一直就像一位带着面纱的美女,总是看不清,摸不透,一直专注服务器端,也从来没有特别重视过,直到最近几年,javascript越来越重要,越来越通用。最近和前端走的比较近,借此机会,好好巩固一下相关知识点。 1.初识replace 在js中有两个replace函数 一个是lo...
摘要:元字符是在正则表达式中有特殊含义的非字母字符。五前瞻后顾后瞻正则表达式从文本头部向尾部开始解析,文本尾部方向,称为前。前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾后瞻方向相反。替换与正则表达式匹配的子串。 Regular Expression 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。按某种规则去匹配符合条件的字符串。不同编程语言的正则表达式略有不同...
摘要:来自本文原作者发表于由于浏览器及的快速迭代发展,以下部分代码功能可能会失效过时或者不够优雅还请看官自行斟辨。重新使用排版,且自动生成了目录方便浏览。 来自:http://www.cnblogs.com/wxydigua/p/3314274.html 本文原作者发表于:2013-09-11, 由于浏览器及ECMAScript的快速迭代发展,以下部分代码功能可能会失效、过时或者不够优雅, ...
摘要:语法参数必填项,字符串或正则表达式,该参数指定的地方分割可选该参数指定返回的数组的最大长度,如果设置了该参数,返回的子字符串不会多于这个参数指定的数组。该数组通过在指定的边界处将字符串分割成子字符串。把正则表达式拆分成小表达式。 正则表达式是什么 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。 为什么使用正则表达式 测试字符串内的模式。例如,可以测试输入字符串...
阅读 1223·2021-09-01 10:30
阅读 2099·2021-07-23 10:38
阅读 870·2019-08-29 15:06
阅读 3057·2019-08-29 13:53
阅读 3259·2019-08-26 11:54
阅读 1774·2019-08-26 11:38
阅读 2352·2019-08-26 10:29
阅读 3108·2019-08-23 18:15