开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
什么是正则表达式
正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象(RegExp)。
这些模式可以判断字符串是否符合要求,也可以从字符串中获取到先要的部分,限制输入框内输入的内容。
创建正则表达式
字面量
通过两个/包裹
let reg = /abc/
new RegExp()
let reg = new RegExp('abc')
常用的正则表达式
断言
边界 表明字符串的起始或终止部分 边界类断言
^匹配- 开头
/^a/表示要以a开头,可以匹配and而不能匹配nad $匹配结束/d$/表示要以d结尾,可以匹配and而不能匹配adn\b匹配一个单词的边界,\b的位置表示 要是空格或者空白\B匹配非单词边界,在\B前后是同一类型,在两个字母之间,或者在两个空格之间
其它断言, 这些都没怎么用过 想要了解参考MDN
x(?=y)(x?1y)(?<=y)x(?<!y)x
字符类
用于区分各种字符
[abc]匹配在方括号中的任何字符,在[]中不需要使用|表示。例如/[abc]/可以匹配father中的a,可以匹配到bca中的b[a-z]使用连字符-表示从a到z的字符,/[abc]/==/[a-c]/[^a-z]这里表示否定,[^a-z]指匹配第一个不是字母的字符.匹配除空白符外的单个字符 例如abcdefg hij,/./可以匹配到a,/.b/可以匹配到ab,/.h/只能匹配到h\d匹配数字 相当于/[0-9]/\D匹配非数字字符 相当于/[^0-9]/\w匹配所有字符 相当于/[a-zA-Z0-9]/\W匹配任何不是来自基本拉丁字母的单词字符 相当于/[^a-zA-Z0-9]/\s匹配当个空白字符\S匹配除空格以外的单个字符\t制表符\n换行符
量词
X?匹配0次及以上x+匹配1次及以上x?匹配0次或1次x{n}匹配前n次,不足n次则不匹配x{n,m}匹配n到m次x{n,}相当于x{n,∞}
常用方法
- reg.exec 搜索匹配,返回一个匹配数组或null
- reg.test 测试字符串是否满足模式,返回true/false
- str.match 返回匹配到的字符串
- str.matchAll 一个包含所有匹配正则表达式的结果及分组捕获组的迭代器
- str.replace
str.replace(reg,'')第二个参数表示替换的内容,返回一个替换后的新字符串 - str.search 放回首次匹配项的索引或-1
- str.split 可以用正则表达式对数组进行切割
举例
提取字符串中的数字
let inputValue = 'hud23d-cd34'
let temp = inputValue.replace(/\D/g,'') // 这里加入g进行全局匹配,否则只会替换第一个字母
console.log(temp)
去掉字符串前后的空格,实现trim()
let inputValue = ' hud23d-cd34 '
let temp = inputValue.replace(/^\s+|\s+$/g,'')
console.log(temp)
/^\s+|\s+$/ 表示匹配以 0次及以上的空格开头或者以0次以上的空格结尾的部分