正则表达式
最近刚学习了JS中使用正则表达式,记录下学习到的笔记
如何初始化正则表达式
let reg = new RegExp(‘\w{3}’,‘gi’) //g代表全局 i代表忽略大小写 一般用第二种方法
let reg2 = /\w{3}/gi
可以通过 console.log(reg.test(‘aaaa’)) 返回值的布尔值来判断是否符合正则
正则表达式中的部分字符以及含义
-
\d 匹配数字
-
\D 匹配非数字
-
\w 匹配数字,字母,下划线
-
\W 匹配除了数字字母下划线的其他字符
-
\s 匹配空格
-
\S 匹配非空格
-
. 匹配除了换行符以外的
-
^ 表示以什么开头 ^bc 表示bc开头的
-
$ 表示以什么结尾 ^bc 表示b开头c结尾的
-
*表示前面一个字符出现零至多次
如在 ab abc abccccccccccc中 ab* 可以全部匹配
-
+表示前面一个字符出现一至多次
如在 ab abc abccccccccccc中 ab+ 可以匹配abc abcccccccc
-
?表示前面字符出现零次或者一次
如在 ab abc abccccccccccc中 ab+ 可以匹配ab abc
-
{n} 表示某字符出现n次
如在 ab abc abccccccccccc中 c{1} 可以匹配abc
-
{n,}表示n到更多次
如在 ab abc abccccccccccc中 c{1,} 可以匹配abc abccccccccccc
-
{n, m}表示某字符出现n到m次
如在 ab abc abccccccccccc中 c{1,5} 可以匹配abc
-
[a-z] 表示匹配所有小写字母
-
[^a-z] 表示匹配所有非小写字母
-
\ 转义符
-
| 或 表示二选一
如 boy bay 可以通过b[a|o]y取得
-
[\u4e00-\u9fa5] 匹配汉字
如 要匹配中国 [\u4e00-\u9fa5] {2}
JS中中正则表达式的使用
-
RegExp对象的方法
-
test 匹配
reg.test(‘aaaa’) 匹配aaa是否符合
-
exec 提取一个符合的
reg.exec(‘aaaa’)
-
-
String对象的方法
- match 一次提取所有符合的
如
let data = '今天星期3明天星期4后天星期5' let reg = /\d/g //加g才可以匹配全局 console.log(data.match(reg))
- split 切割数组
如: 2015-2-12
console.log(data.split(‘-’))
【2015】,【2】,【12】
-
trim 只能去除数组的前后空格
-
replace
let data = ’ 213 113 23123 21312321 412312312’
let reg = /\s/g ///经常忘记加g 必须加g才能匹配全部 不然没有下效果 只能替换一个空格
console.log(data.replace(reg, ‘’))
还可以用split data.split(’ ‘).join(’')
-
search
data.search(reg) 会返回匹配整个表达式所在的位置
正则的贪婪模式
在H5代码中匹配/<.+>/
会发现中间存在内容 但并没有停止而是继续往下搜索
而/<.+?>/可以开启非贪婪
对数据进行脱敏
'13111112222'.replace(/^(.{3})(.{4})(.{4})$/, '$1****$3');
推荐大家一个好的学习网站
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp