一些常用正则
1、匹配以特定字符开头和结尾的所有字符,如匹配注释
// 以 sql 语句注释为例
// 1、多行注释,匹配换行的情况
const regex = /\/\*([\s\S]*?)\*\//g
const str = '/*注释1*/这是注释/*注释2*/'
const res = str.match(regex)
console.log(res) // res - ['/*注释1*/', '/*注释2*/']
// 2、单行注释,以 -- 开头,不匹配换行
const regex = /--(.*)$/
const str = '--这是注释 的一行'
const res = str.match(regex)
console.log(res) // res - [ "--这是注释 的一行", "这是注释 的一行"]
一些解释:
1、“.”(点符号)匹配除了换行符“\n”以外的所有字符。
2、匹配任意表达式(包括换行符)的方法:([\s\S]*), 也可以用 ([\d\D]) 或 ([\w\W])。
3、“^”: ^ 匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。在方括号中使用时,表示不接受该方括号表达式中的字符集合。
4、“$”: $ 匹配行或字符串的结尾。
5、“\b”: 不会消耗任何字符只匹配一个位置,常用于匹配单词边界。如 我想从字符串中“This is Regex”匹配单独的单词 “is” 正则就要写成 “/\bis\b/”。
6、“\d”: 匹配数字。
7、“\w”:匹配字母,数字,下划线。如匹配 "abcd_dddd", 正则:/w+/, 这里的“+”字符为一个量词指重复的次数。
8、“\s”:匹配任何空白字符,包括空格,制表符,换页符等,等价于[\f\n\r\t\v]。
9、“\S”:匹配任何非空白字符。
10、“()”: 标记一个子表达式的开始和结束位置。如 abcd 时,每个字母是分开的;a(bcd) 时,bcd 为一个整体。
11、“*”:匹配前面的子表达式零次或多次。
12、“+”:匹配前面的子表达式一次或多次(最少匹配一次)。
13、“?”:匹配前面的子表达式零次或一次(贪婪模式),正则中默认是非贪婪模式。如字符串 aacaaac,正则表达式 \S+c 匹配结果是 aacaaac;贪婪模式 \S+?c 匹配结果为 aac,最多只匹配一次。