在线工具 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