222 lines
3.9 KiB
Markdown
222 lines
3.9 KiB
Markdown
---
|
||
title: 正则表达式
|
||
date: 2018-04-04 11:45:43
|
||
tags: [正则表达式]
|
||
categories: 'JS'
|
||
---
|
||
# 正则的介绍
|
||
|
||
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
|
||
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
|
||
正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
|
||
|
||
## 修饰符
|
||
|
||
### i
|
||
|
||
执行对大小写不敏感的匹配。
|
||
|
||
### g
|
||
|
||
执行全局匹配(所有,而不是找到一个后停止匹配)。
|
||
|
||
### m
|
||
|
||
执行多行匹配。
|
||
|
||
## 方括号
|
||
|
||
### [abc]
|
||
|
||
查找方括号之间的任何字符。
|
||
|
||
### [^abc]
|
||
|
||
查找任何不在方括号内的字符。
|
||
|
||
### [0-9]
|
||
|
||
查找任何从 0 至 9 的数字。
|
||
|
||
### [a-z]
|
||
|
||
查找任何从小写 a 到 z 的字符。
|
||
|
||
### [A-Z]
|
||
|
||
查找任何从大写 A 到 Z 的字符。
|
||
|
||
### [A-z]
|
||
|
||
查找任何从大写 A 到小写 z 的字符。
|
||
|
||
### [adgk]
|
||
|
||
查找括号中给定的字符集。
|
||
|
||
### [^adgk]
|
||
|
||
查找除括号内之外的所有字符。
|
||
|
||
### [red|blue|green]
|
||
|
||
查找任何指定的选项。
|
||
|
||
## 元字符
|
||
|
||
### '.'
|
||
|
||
查找单个字符,除了换行符和结束符。
|
||
|
||
### \w
|
||
|
||
查找单词字符。
|
||
|
||
### \W
|
||
|
||
查找非单词字符。
|
||
|
||
### \d
|
||
|
||
查找数字。
|
||
|
||
### \D
|
||
|
||
查找非数字。
|
||
|
||
### \s
|
||
|
||
查找空白字符。
|
||
|
||
### \S
|
||
|
||
查找非空白字符。
|
||
|
||
### \b
|
||
|
||
匹配单词边界。
|
||
|
||
### \B
|
||
|
||
匹配非单词边界。
|
||
|
||
### \0
|
||
|
||
查找null字符。
|
||
|
||
### \n
|
||
|
||
查找换行符。
|
||
|
||
### \f
|
||
|
||
查找换页符。
|
||
|
||
### \r
|
||
|
||
查找回车符。
|
||
|
||
### \t
|
||
|
||
查找制表符。
|
||
|
||
### \v
|
||
|
||
查找垂直制表符。
|
||
|
||
### \xxx
|
||
|
||
查找以八进制 xxx 规定的字符。
|
||
|
||
### \xdd
|
||
|
||
查找以十六进制 dd 规定的字符。
|
||
|
||
### \uxxxx
|
||
|
||
查找以十六进制 xxxx 规定的 Uicode 字符。
|
||
|
||
## 量词
|
||
|
||
### n+
|
||
|
||
匹配任何包含至少一个 n 的字符串。
|
||
> eg: /a+/ 匹配 “candy” 中的 “a”, “caaaaaandy” 中的 “a”。
|
||
|
||
### n*
|
||
|
||
匹配任何包含零个或多个 n 的字符串。
|
||
> eg: /bo*/ 匹配 “a ghost booooed ” 中的 “boooo”,“hell by” 中的 ”b”。
|
||
|
||
### n?
|
||
|
||
匹配任何包含零个或一个 n 的字符串。
|
||
> eg: /e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。
|
||
|
||
### n(X)
|
||
|
||
匹配包含 X个 n 的序列的字符串。
|
||
> eg: /a(2)/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy”,“caaandy”。
|
||
|
||
### n{X,}
|
||
|
||
X 是一个正整数,前面的模式 n 连续出现至少 X 次匹配。
|
||
> /a{2,}/ 不匹配 “candy”,匹配 “caandy” 和 “caaaandy” 中的所有 “a“。
|
||
|
||
### n{X, Y}
|
||
|
||
n 出现至少 X 次,至多 Y 次。
|
||
> /a{1,3} 匹配 ”candy“ 的 ”a“,”caandy“ 中的 ”aa“,“caaaandy” 前三个 “a”。
|
||
|
||
### n$
|
||
|
||
匹配任何以 n 结尾的字符串。
|
||
|
||
### ^n
|
||
|
||
匹配任何以 n 开头的字符串。
|
||
|
||
### ?=n
|
||
|
||
匹配任何其后紧接指定 n 的字符串。
|
||
|
||
### ?!n
|
||
|
||
匹配任何其后没有指定 n 的字符串。
|
||
|
||
## RegExp 对象方法
|
||
|
||
### compile
|
||
|
||
编译正则表达式。
|
||
|
||
### exec
|
||
|
||
检索字符串中指定的值。返回找到的值,并确定其位置。
|
||
|
||
### test
|
||
|
||
检索字符串中指定的值,返回 true or false。
|
||
|
||
## String 对象的正则方法
|
||
|
||
### search
|
||
|
||
检索与正则表达式相匹配的值。
|
||
> eg: str.search("blue") 返回的是 blue 出现的字符下标(大小写敏感)。
|
||
|
||
### match
|
||
|
||
找到一个或者多个正则表达式的匹配。
|
||
> eg: str.match(/ain/g) 返回所有出现的 ain (大小写敏感)。
|
||
|
||
### replace
|
||
|
||
替换与正则表达式匹配的字串。
|
||
> eg: str.replace(/blue/g,"red") 替换所有 blue 为 red。
|
||
|
||
### split
|
||
|
||
把字符串分割为字符串数组。
|
||
> string.split(separator,limit) 在 separator 指定位置分割, 返回内容不超过 limit 长度。
|