正则表达式
1. 什么是正则表达式
正则表达式是一种用来匹配字符串的强有力的工具,它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为是匹配的。
在JavaScript中,正则表达式是对象,通常用来检索、替换那些符合某个模式的文本。匹配(验证表单)、替换(过滤敏感词)、提取(爬虫)等。
2.语法
定义正则表达式
1 | const str = 'hello world' |
判断字符串是否符合规则
1 | console.log(reg.test(str)) // true |
检索(查找)符合规则的字符串
1 | regObj.exec(str) // 返回一个数组,包含匹配的字符串,index,input |
3.元字符
- 普通字符:字母、数字,仅仅描述字符本身。
- 元字符:具有特殊含义的字符,用来描述字符的组合规则,比如26字母可以写成
[a-z]。
🦮边界符
表示位置,开头和结尾,必须用什么开头,用什么结尾。
^:匹配字符串的开始。$:匹配字符串的结束。- 比如:
/^hello$/表示字符串必须是hello,或者/^hello/表示字符串必须以hello开头,/hello$/表示字符串必须以hello结尾。
🦮量词
描述字符出现的次数。
*:匹配前一个字符0次或多次,比如/a*/可以匹配''、'a'、'aa'等。+:匹配前一个字符1次或多次,比如/a+/可以匹配'a'、'aa'、'aaa'等。?:匹配前一个字符0次或1次,比如/a?/可以匹配''、'a'。{n}:匹配前一个字符n次,比如/a{3}/可以匹配'aaa'。{n,}:匹配前一个字符至少n次,比如/a{3,}/可以匹配'aaa'、'aaaa'。{n,m}:匹配前一个字符n到m次,比如/a{3,5}/可以匹配'aaa'、'aaaa'、'aaaaa'。
🦮字符类
[]:匹配方括号中的任意一个字符。[^]:匹配除了方括号中的任意一个字符。-:连字符,表示范围,比如[a-z]表示26个小写字母。\d:匹配任意一个数字,等价于[0-9]。\D:匹配任意一个非数字,等价于[^0-9]。\w:匹配任意一个字母、数字、下划线,等价于[a-zA-Z0-9_]。\W:匹配任意一个非字母、数字、下划线,等价于[^a-zA-Z0-9_]。\s:匹配任意一个空白字符,包括空格、制表符、换行符等。\S:匹配任意一个非空白字符。.:匹配除了换行符之外的任意一个字符。
4.修饰符
修饰符约束正则执行的某些细节行为,如是否区分大小写、是否多行匹配等。
i:忽略大小写。g:全局匹配,匹配所有符合规则的字符串。m:多行匹配,匹配每一行的开头和结尾。s:单行匹配,.可以匹配换行符。u:Unicode模式,处理大于\uFFFF的Unicode字符。y:粘连模式,匹配从上次匹配的位置开始。
例如:1
const reg = /hello/gi // 忽略大小写,全局匹配
- .replace()方法,替换字符串,第一个参数是正则表达式,第二个参数是要替换的字符串
1
2
3const str = 'hello world'
const result = str.replace(/hello/, 'hi') // 又发返回值,不会改变原字符串,并且只会替换第一个匹配到的字符串
const result2 = str.replace(/hello/g, 'hi') // 全局匹配,会替换所有匹配到的字符串|:或者,匹配多个规则中的一个。’
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
