3.9 KiB
title | date | tags | categories | |
---|---|---|---|---|
正则表达式 | 2018-04-04 11:45:43 |
|
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 长度。