在线工具 https://regexr.com/
一、入门
特殊字符
| Character | Meaning | 
|---|---|
| \ | 1. 转移,如:/\*/ 2. 特殊,如: /\d/ | 
^ | 
1. 匹配输入的开始,如:/^abc/ 2.  | 
$ | 
结束 | 
. | 
匹配除换行符以外的任意字符 | 
\w | 
字母、数字、下划线、汉字 | 
\s | 
空格 | 
\d | 
数字 | 
\b | 
边界符 | 
二、基本元素
反义(对应大写)
| Character | Meaning | 
|---|---|
\W | 
非\w -> 非字母,数字,下划线,汉字 | 
\S | 
非\s -> 非空格 | 
\D | 
非\d -> 非数字 | 
\B | 
非\b -> 非边界符 | 
常用限定符
| Character | Meaning | 
|---|---|
\* | 
重复零或多次 | 
+ | 
重复一次或多次 | 
? | 
重复零或一次 | 
{n} | 
重复 n 次 | 
{n,} | 
重复 n 次以上 | 
{n,m} | 
重复 n-m 次 | 
三、语法
贪婪与懒惰
| Character | Meaning | string | regex | result | 
|---|---|---|---|---|
\* | 
重复零或多次 | aababab | /a.*b/g | [“aababab”] | 
+ | 
重复一次或多次 | aababab | /a.+b/g | [“aababab”] | 
? | 
重复零或一次 | aababab | /a.?b/g | [“aab”, “ab”, “ab”] | 
\*? | 
重复任意次,但尽可能少重复 | aababab | /a.*?b/g | [“aab”, “ab”, “ab”] | 
+? | 
重复 1 次或更多次,但尽可能少重复 | aababab | /a.+?b/g | [“aab”, “abab”] | 
?? | 
重复 0 次或 1 次,但尽可能少重复 | aababab | /a.??b/g | [“aab”, “ab”, “ab”] | 
五、实战
题目:字符串中第一个出现一次的字符
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符「go」时,第一个只出现一次的字符是「g」。当从该字符流中读出前六个字符「google」时,第一个只出现一次的字符是「l」。
1  | function find(str) {  | 
题目:将
1234567变成1,234,567,即千分位标注
1  | function exchange(num) {  | 
题目,请写出下面的代码执行结果
1  | var str = 'google';  | 
解决:
1  | const reg = /o/g;  | 
六、补充
分组
- (?:exp) 匹配 exp,不捕获匹配的文本,也不给此分组分配组号
 - (?=exp) 匹配 exp 前面的位置
 - test、exec、match、replace、search
 - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/match