平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“前端正则表达式书写及常用的做法”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
理解这一步时,正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),能够用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
前端正则表达式书写
一.写法
写法一
/正则表达式/修饰符
修饰符
- /i (忽略大小写)
- /g (全文查找出现的所有匹配字符)
- /m (多行查找)
- /gi(全文查找、忽略大小写)
- /ig(全文查找、忽略大小写)
例子:/a/gi 查找内容中的a
不写修饰符默认只匹配一个
写法二
let a = new RegExp('/正则表达式/','修饰符')
二.常用几个方法
1.match
方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
得到的内容
["匹配到的内容", index: 3, input: "字符串对象", groups: undefined]
如果regexp修饰符为/g则得到对象为一个数组
语法:
1.stringObject.match(str)
2.stringObject.match(regexp)
拿查找字符串abc 中的a举例
'aabc' .match('a') 只匹配第一个
'aabc' .match(/a/) 只匹配第一个
2.replace
用来字符串中一些字符替换另一些字符,或替换一个与正则表达式相匹配的子串
语法:
1.stringObject.replace('查找的第一个字符串','修改后的字符串')
2.stringObject.replace(regexp(正则表达式匹配到的内容所有替换),'修改后的字符串')
3.search
他用法与match类似不过他得到的是索引
语法:
1.stringObject.match('searchvalue')
2.stringObject.match(regexp)
4.test
落到代码里,方法用来检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则得到 true,否则得到 false。
语法:
regexp.test(stringObject)
如
/a/.test('a') #返回true
/a/.test('ac') #返回true
/a/.test('c') #返回false
5.exec
理解这一步时,方法就是用来检索字符串中正则表达式的匹配,如果匹配到了那么就得到一个存放有结果的数组,如果没有匹配到就得到一个null
regexp.exec(stringObject)
其实和match类似,不过就是填写的位置返一下
但是有一点
console.log('c'.exec('c')); #会报错
console.log('c'.match('c')); #会匹配c
总结
实际处理时,总的来说,正则表达式书写适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

