正则表达式的一些记录匹配方法
https://wangdoc.com/javascript/stdlib/regexp.html
reg
reg的方法exec、test
exec返回匹配到的字符
test返回ture或者false
string
string的方法match,search,replace,split
match返回匹配的的字符
search返回匹配的的第一个参数的位置
replace对匹配到的参数进行替换,不改变原有的字符串
split按照正则方法进行分割字符串并返回一个数组,不改变原有的字符串
正则的exec和字符串的match在正则后面携带了g之后显示不同
let s = 'abba'
let reg = /a/g
s.match(reg)
// ['a','a']
reg.exec(s)
//['a', index: 0, input: 'abba', groups: undefined]
reg.exec(s)
//['a', index: 3, input: 'abba', groups: undefined]
reg.exec(s)
//null
如果match匹配的一个正则包含|并且不含g
例如
let pattern = /a|b|c/
let a = 'abcabc'
a.match(pattern)
//['a', index: 0, input: 'abcabc', groups: undefined]
let pattern = /a|b|c/g
let a = 'abcabc'
a.match(pattern)
//['a', 'b', 'c', 'a', 'b', 'c']
replace的一些应用,replace不会修改原有的str
let str = ' a '
//去除首尾两端的空格
str.replace(/^\s+|\s+$/g,'')
//'a'
repace方法的第二个参数可以使用美元符号$,用来指代所替换的内容。
- $&: 匹配的的字符串
- $`: 匹配结果前面的文本 =>$` 要用\进行转义
- $': 匹配结果后面的文本 =>$' 要用\进行转义
- $n: 匹配成功的第n组内容,n事从1开始的自然数
- $$: 指代美元符号$
'miracle'.replace(/i/,`[$\`$&$\']`)
//'m[miracle]racle'
replace的第二个参数可以是一个函数
let a = 'hello world'
a.replace(/hello|world/g,function(match){
return match.toUpperCase()
})
//HELLO WORLD
var prices = {
'p1': '$1.99',
'p2': '$9.99',
'p3': '$5.00'
};
var template = '<span id="p1"></span>'
+ '<span id="p2"></span>'
+ '<span id="p3"></span>';
template.replace(
/(<span id=")(.*?)(">)(<\/span>)/g,
function(match, $1, $2, $3, $4){
return $1 + $2 + $3 + prices[$2] + $4;
}
);
// "<span id="p1">$1.99</span><span id="p2">$9.99</span><span id="p3">$5.00</span>"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通