js正則表達式及RegExp轉義踩坑實錄
//"12[3456".match(/12\[/g)
//new RegExp("12\\[","gm").test("212[1ss2s")
交代本文背景
1.寫一個css文件,做筆記的時候用了js的//注釋,應該用/* */注釋才對的,運行的話要刪除之前的注釋,這里列舉部分篇幅。
// :root -> 獲取根元素html
:root {
// 這些是變量,可以在別的地方使用,像font-size: var(--large-size);
--color-text: #666; // 文字顏色
--color-high-text: #ff5777; // 文字高亮顏色
--color-tint: #ff8198; // 背景顏色
--color-background: #fff;
--font-size: 14px;
--line-height: 1.5;
}
1
2
3
4
5
6
7
8
9
10
2.現在想要在瀏覽器控制台F12寫些代碼刪掉整段css代碼的注釋。思路是:我每個注釋都是以"//+空格"開頭的,我只要把所有同一行內"//+空格"后面的內容去掉即可。下面開始在控制台寫js代碼。
// 定義個str保存我寫的css代碼
let str = `// :root -> 獲取根元素html
:root {
// 這些是變量,可以在別的地方使用,像font-size: var(--large-size);
--color-text: #666; // 文字顏色
--color-high-text: #ff5777; // 文字高亮顏色
--color-tint: #ff8198; // 背景顏色
--color-background: #fff;
--font-size: 14px;
--line-height: 1.5;
}`;
// 字符串分割成數組strArr,以換行符分隔
let strArr = str.split('\n');
// 定義正則表達式,表達式有挺多表示方法的,下面幾個注釋掉的作用是一樣的
// let regex = /\/\/\s.*/g;
// let regex = new RegExp("// .*","g");
// let regex = new RegExp(/\/\/\s.*/,"g");
let regex = new RegExp('//\\s.*','g');
// 定義新數組ansArr裝刪去注釋的strArr數組
let ansArr = strArr.map(x => {
x = x.replace(regex, '');
return x
})
// 數組轉成字符串,以換行符連接
let ansStr = ansArr.join('\n')
// 打印,復制內容即可
console.log(ansStr);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
問題與總結
正則表達式可以寫在斜杠內,用**/正則表達式/表示,也可以用雙引號"正則表達式"**表示。但是這兩種方法寫正則表達式有坑:
用斜杠**/正則表達式/**表示時,正則表達式內的斜杠/需要轉義,反斜杠\、雙引號"、不需要轉義,例如我想寫"//+空格+以后任何內容",我就要寫成/\/\/\s.*/
用雙引號**“正則表達式”**表達正則表達式時,**斜杠/不需要轉義,反斜杠\、雙引號"需要轉義,**例如我想寫"//+空格+以后任何內容",我就要寫成“//\\s.*”
————————————————
版權聲明:本文為CSDN博主「一條小羅非」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_38689203/article/details/104601650
