说明
- 最近的业务正则较多,特此回顾一下基本用法
- 适用于 正则表达式的有经验的朋友。
匹配任意字符
let reg = /a../g;
reg.test('aqw');
匹配字母和数字
let reg = /\w/g;
reg.test('1231qwesadFSD');
let regNumber = /\d/g;
regNumber.test('31241320');
集合和匹配多个
let bad = /yo/g;
let reg = /[Yy][Oo]+/g;
reg.test('Yo');
reg.test('yO');
单词边界
let reg = /yo{1,4}\b/;
reg.test('yo');
reg.test('yoo');
reg.test('yooo');
reg.test('yooooooooooo');
分组
let reg = /(ad)..(cd)/g;
'adqwcd'.replace(reg,'$1 123 -- $2')
匹配不捕获
- 这样的话第一组就会 undefined,第二组变成第一组。只匹配不捕获分组
let reg = /(?:ad)..(cd)/g;
'adqwcd'.replace(reg,'$1 123 -- $2')
正向预查(匹配右边)和反向预查(匹配左边)
let reg = /\d+(?=元)/
let reg = /(?<=¥|\d)\d+/
速查表
符号 |
描述 |
例子 |
能匹配 |
不能匹配 |
^ |
行首或字符串开始 |
^yo |
yo |
ayo |
$ |
行末或字符串结束 |
yo$ |
yo |
yop |
\b |
单词边界 |
\byo\b |
mu yo mu |
muyomu |
\B |
非单词边界 |
\Byo\B |
muyomu |
mu yo mu |
符号 |
描述 |
例子 |
能匹配 |
不能匹配 |
(?=xxx) |
正向肯定预查,从任何匹配xxx的字符串开始处匹配查找字符串 |
yo(?=o) |
yoo |
yo |
(?!xxx) |
正向否定预查,从任何不匹配pattern的字符串开始处匹配查找字符串 |
yo(?!o) |
yo |
yoo |
(?<=xxx) |
反向肯定预查,与正向肯定预查类拟,只是方向相反 |
(?<=y)o |
yo |
yoo |
(?<!xxx) |
反向否定预查,与正向否定预查类拟,只是方向相反 |
(?<!goo)d |
mood |
good |
符号 |
描述 |
例子 |
能匹配 |
不能匹配 |
[ ] |
字符集合 |
[ace] |
a, c, e |
d |
[ - ] |
字符范围 |
[a-c] |
a, b, c |
d |
[^ ] |
不包含的字符集合 |
[^abc] |
d, e |
a, b, c |
. |
匹配除断行外的任何字符 |
yo. |
yoo, yop, yoh |
yo |
\s |
空白字符,等于[\n\r\f\t ] |
la\sla |
la la |
lala |
\S |
非空白字符,等于[^\n\r\f\t] |
la\sla |
lala |
la la |
\d |
数字 |
\d{2} |
23 |
1a |
\D |
非数字 |
\D{3} |
yoo, abc |
yo1 |
\w |
单词,等于[a-z-A-Z0-9_] |
\w{4} |
v123 |
v12.3 |
\W |
非单词,等于[^a-z-A-Z0-9_] |
.$%? |
.$%? |
.ab? |
特殊字符 |
描述 |
\n |
断行 |
\r |
回车符 |
\t |
制表符 |
\v |
垂直制表符 |
\f |
换页 |
[\b] |
退格 |
符号 |
描述 |
例子 |
能匹配 |
不能匹配 |
| |
或,其一 |
a|b |
a, b |
c |
(xxx) |
匹配xxx并获取这一匹配 |
yo(o|p) |
yoo 或 yop |
yoh |
(?:xxx) |
匹配xxx但不获取这一匹配 |
y(?:o) |
yo |
ya |
+ |
重复1次或多次 |
yo+ |
yo, yooo |
y |
* |
重复0次或多次 |
yo* |
y, yoo |
yop |
? |
出现0次或1次 |
yo? |
y, yo |
ye |
?? |
?的懒惰模式,尽可能少匹配 |
yoo?? |
yo |
yoo |
+? |
+的懒惰模式 |
yo+? |
yo |
yoo |
*? |
*的懒惰模式 |
yo*? |
y |
yo |
{n} |
重复n次 |
yo{2} |
yoo |
yooo |
{n,m} |
重复n到m次 |
yo{1, 3} |
yo,yooo |
yoooo |
{n,} |
重复至少n次 |
yo{2,} |
yoo, yooo |
yo |