正则表达式
正则表达式测试网站:regexr.com
基础知识
1.量词
runoo+b,可以匹配 runoob、runooob、runoooooob 等。
+ 号代表前面的字符必须至少出现一次(1次或多次)。
runoo*b,可以匹配 runob、runoob、runoooooob 等。
* 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
colou?r 可以匹配 color 或者 colour。
? 问号代表前面的字符最多只可以出现一次(0次、或1次)。
o{2} fo{2}d 可以匹配 food
n 是一个非负整数。匹配确定的 n 次。
o{2,} fo{2,}d 可以匹配 food foood fooood
n 是一个非负整数。至少匹配n 次。
o{2,5} fo{2,5}d 可以匹配 food foood fooood foooood
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
2.非打印字符
\f 换页符
\n 换行符
\r 回车符
\s 任何空白字符
\S 任何非空白字符
\t 制表符
\v 垂直制表符
3.需转义字符
例: $
$ () * + . [] ? \ ^ {} |
4.定位符
定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。
定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界。
^ :匹配输入字符串开始的位置。
$ : 匹配输入字符串结尾的位置。
/^[1-9][0-9]{0,1}$/ 例: 01/false 11/true 123/false
\b : 匹配一个字边界,即字与空格间的位置。
/\bCha/ 例:Chase /true cd /false /头边界
/Cha\b/ 例:haCha /true hacha/false 尾边界
\B : 非字边界匹配。
5.贪婪/非贪婪 匹配
*、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。
var str = `<H1>Chapter 1 - 介绍正则表达式</H1>`;
贪婪:下面的表达式匹配从开始小于符号 (<) 到关闭 H1 标记的大于符号 (>) 之间的所有内容。
var reg = /<.*>/ (贪婪匹配)
str.match(reg)[0] // <H1>Chapter 1 - 介绍正则表达式</H1>
var reg1 = /<.*?>/ (非贪婪匹配)
str.match(reg1)[0] // <H1>