全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10881659.html,多谢~=。=
(1)直接量字符
字符 |
匹配 |
字母和数字字符 |
自身 |
o |
NUL字符 |
|
制表符 |
|
换行符 |
v |
垂直制表符 |
f |
换页符 |
|
回车符 |
xnn |
由十六进制数nn指定的拉丁字符,x0A= |
uxxxx |
由十六进制数xxxx指定的Unicode字符,u0009= |
cX |
控制字符^X,cJ= |
(2)字符类
字符 |
匹配 |
[…] |
方括号内的任意字符 |
[^…] |
不在方括号内的任意字符 |
. |
除换行符和其他Unicode行终止符之外的任意字符 |
w |
任何ASCII字符组成的单词 [a-zA-Z0-9_] |
W |
任何不是ASCII字符组成的单词 [^a-zA-Z0-9_] |
s |
任何Unicode空白符 |
S |
任何非Unicode空白符的字符 |
d |
任何ASCII数字,[0-9] |
D |
除了ASCII数字之外的任何字符 [^0-9] |
[] |
退格直接量 |
(3)重复字符(贪婪匹配)
字符 |
含义 |
{n,m} |
匹配前一项至少n次,但不能超过m次 |
{n,} |
匹配前一项至少n次或者更多次 |
{n} |
匹配前一项n次 |
? |
匹配前一项0次或者1次(可选项) {0,1} |
+ |
匹配前一项1次或者多次 {1,} |
* |
匹配前一项0次或者多次(不限次) {0,} |
非贪婪匹配:尽可能少的匹配
??、+?、*?、{n,m}?
(4)选择、分组、引用字符
字符 |
含义 |
| |
选择,匹配左右子表达式(从左往右,若左边匹配则忽略右边) |
(…) |
组合 |
(?:…) |
只组合 |
|
和第n分组第一次匹配的字符相匹配 |
(5)锚字符
字符 |
含义 |
^ |
匹配字符串的开头 |
$ |
匹配字符串的结尾 |
|
匹配一个单词的边界 Eg:hi |
B |
匹配非单词边界的位置 |
(?=p) |
正向先行断言,要求接下来的字符都与p匹配,但不包括p那些字符 |
(?!p) |
负向先行断言,要求接下来的字符不与p匹配 |
(6)修饰符
字符 |
含义 |
i |
执行不区分大小写的匹配 |
g |
执行全局匹配,找到所有匹配 |
m |
多行匹配模式 |
Eg:/java$/im → “java”或者“Java is fun”
(7)String对象
方法 |
示例 |
返回 |
特殊 |
search() |
“JavaScript”.search(/script/i) 返回4 |
第一个与之匹配的子串的起始位置,找不到则返回-1 |
不支持全局检索,忽略修饰符g |
replace() |
text.replace(/javascript/gi,“JavaScript”) text.replace(/“([^”]*)”/, ‘“$1”’) |
替换后的字符串 |
$数字 参数若非正则表达式,则直接搜索 |
match() |
“1 plus 2 equals 3”.match(/d+/g) 返回[“1”, “2”, “3”] |
由匹配结果组成的数组,未匹配则返回null |
非全局搜索时,a[0]存放完整匹配,a[1]存放a[0]与第一个括号括起来表达式相匹配的子串,所以a[n]存放的是$n的内容 |
split() |
“123,456,789”.split(“,”) 返回[“123”, “456”, “789”] “1, 2, 3, 4, 5”.split(/s*,s*/) 返回[“1”, “2” ,“3”, “4”, “5”] |
拆分后的子串数组 |
参数是正则表达式时,可以指定分隔符,允许留白 |
(8)RegExp对象
方法 |
示例 |
返回 |
特殊 |
regExp() |
var zipcode=new RegExp(“\d{5}”, “g”) |
RegExp对象 |
第一个参数正则表达式主体部分(两斜线之间) 第二个参数可选,修饰符 “”转义字符前缀 |
exec() |
var pattern=/Java/g; var text=”JavaScript is more fun than Java!”; var result=pattern.exec(text); |
同match。 数组.index:发生匹配的字符位置 数组.input:引用正在检索的字符串 |
数组第一个元素为与正则表达式匹配的字符串,余下的是与圆括号内的子表达式匹配的字符串。 同一个正则表达式第二次调用exec()时,将从lastIndex出开始检索。 |
test() |
var pattern=/java/I; pattern.test(“JavaScript”); |
只要存在匹配就返回true,否则返回false |
也可使用lastIndex属性 |
属性 |
含义 |
类型 |
source |
正则表达式的文本 |
只读字符串 |
global |
是否带有修饰符g |
只读布尔值 |
ignoreCase |
是否带有修饰符i |
只读布尔值 |
multiline |
是否带有修饰符m |
只读布尔值 |
lastIndex |
若有修饰符g,该属性存储在整个字符串中下一次检索的开始位置 |
可读/写整数(exec和text方法会用到) |