javascript 正則表達式 反向引用

反向引用語法爲“\num”,即可引用編號爲num的字匹配存儲的內容。num是從1到99的整數,並且num是前面表達式中已編號的子匹配,當然也不能超出已有編號的範圍。

例如正則表達式/\w{5}/可以匹配目標字符串中連續出現五個字符,如"hahfi"、"abadc"、"aaaaa"、"zyich"等都可以成功匹配。如果要求五次出現的都是同一個字符,如"aaaaa"、"ccccc"等,則可以用正則表達式/(\w)\1{4}/來完成匹配,\1{4}表示字匹配(\w)匹配到的結果再重複出現4次。

實例:
<script type="text/javascript">
<!--
var str = "abcde";
var reg = /\w{5}/;
var msg;
if(reg.test(str)){
    msg = "成功匹配";
}else{
    msg = "匹配失敗";
}
document.write(msg);
-->
</script>
輸出:
成功匹配
------------------------------------------------------------------------------------------------------------------
實例:
<script type="text/javascript">
<!--
var str = "aaaaa";
var reg = /(\w)\1{4}/;
var msg;
if(reg.test(str)){
    msg = "成功匹配";
}else{
    msg = "匹配失敗";
}
document.write(msg);
-->
</script>
輸出:
成功匹配
-------------------------------------------------------------------------------------------------------------

再來舉個較爲複雜的例子,正則表達式/<(\w+)\s*(\w+(=('|").*?)\4)?\s*)*>.*?<\/\1>/在匹配"<td id='td1' style='color:while'></td>"時成功匹配。這裏的反向引用\1等於(\w+),從而保證了只有當"<td>"與"<
\td>"配對時,模式匹配才成功,否則匹配失敗:而\4等於"'|"",保證"="號後要以單引號"'"或者雙引號"""開始,並以對應的符號結尾,如id='td1',不允許出現id=id='td1'的情況。

實例:
<script type="text/javascript">
<!--
var str = "<td id='td1' style='color:while'></td>";
var reg = /<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?<\/\1>/;
var msg;
if(reg.test(str)){
    msg = "成功匹配";
}else{
    msg = "匹配失敗";
}
document.write(msg);
-->
</script>
輸出:
成功匹配


發佈了15 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章