正则表达式
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