原文:https://blog.csdn.net/qq_43161149/article/details/82928324
js 正則表達式的反向引用 \1
分析一下這個正則表達式的含義: /(?=(YYYY|YY|MM|DD|HH|mm|ss|ms))\1([:\/]*)/
————————————————————————————————————————
選擇字符:|
com|cn|edu --- 選擇其中一個(含有其中一個就能匹配成功)
子表達式:用()包圍的就是子表達式
str = "((/d)(/w))"
第一個子表達式:((\d)(\w))
第二個子表達式:(\d)
第三個子表達式:(\w)
子表達式:以第一個出現的 ( 為第一個表達式
捕獲:將匹配到的子表達式保存在RegExp對象中
RegExp.$1:保存第一個子表達式
RegExp.$2:保存第二個子表達式
RegExp.$3:保存第三個子表達式
...
反向引用:調用捕獲到的值
\1:指向RegExp.$1
\2:指向RegExp.$2
\n:指向RegExp.$n
例子:
匹配連續相同的三個數字
-
var str = 'ooo111ooo222ooo333ooo123';
-
-
var reg = /(\d)\1\1/g;
-
-
var result = str.match(reg);
-
-
console.log(result);//[111,222,333]
匹配類型為abab的數字
-
var str = 'ooo1212ooo2323ooo3434ooo1234';
-
-
var reg = /(\d)(\d)\1\2/g;// \d匹配數字,\1對應的是第一個表達式(\d),\2對應的是第二個表達式(\d),g是全局匹配
-
-
var result = str.match(reg);
-
-
console.log(result);
匹配標簽內的內容
-
var str = 'ooo<div>hello world!</div>234';
-
-
var reg = /<(\w+).*<\/\1>/g;
-
-
var result = str.match(reg);
-
-
console.log(result);
分析
\w: 查找字母、數字、下划線
\w+: 匹配查找至少一個\w的字符串
.: 查找單個字符除了換行符和行結束符
.*: 匹配查找至少零個.的字符串
\/: 因為/為特殊字符,所以需要用轉義符\
\1: 反向引用(\w+)