1. 程式人生 > >關於javascript正則“反向引用”

關於javascript正則“反向引用”

前言:一直忙著找實習單位,足足有一個半月沒有寫過部落格,也沒有學習過,終於找到一個勉強合適的,還是趕緊加油吧,別被別人甩太遠了!(話說這天好冷啊委屈委屈委屈)。

本來是在看著阿樹部落格裡的jQuery規範的,不知道怎麼搞得,稀裡糊塗的就看到正則去了,把學到的東西總結一下:

首先先看下面這個例子:

"abcd".match(/(a(bc)d)/);
//result: ["abcd", "abcd", "bc"]
這個例子說明看括號匹配順序是按左括號計算的。(這是別人的理解,我的理解是匹配順序是按從外到裡從左到右計算的,每個反向引用都由一個編號或名稱來標識,並通過“\編號”表示法進行引用,外面的組的編號靠前。也就是說引用分組是編號排列是從外到內編排。)

再看這個例子

'aaa'.match(/(a\1)/);
//result: ['a']
'aaaaaaa'.match(/(a\1\1\1\1\1)/);
//result: ['a']
/(a\1)/在第一個括號中使用\1引用是沒有意義的,看來在chrome中的測試結果表明,無論在第n個括號中有幾個\n都會被忽略。(既從最外層括號往裡層數)
'aaabbbcccdddeeefff'.match(/[abc]\1/g);//null
'aaabbbcccdddeeefff'.match(/([abc])\1/g);//["aa", "bb", "cc"]
'aaabbbcccdddeeefff'.match(/(([abc])\1)\1/g);//["aa", "bb", "cc"]
'aaabbbcccdddeeefff'.match(/(([abc])\1)\2/g);//["aa", "bb", "cc"]
'aaabbbcccdddeeefff'.match(/((([abc])\1)\2)\3/g);//["aaa", "bbb", "ccc"]

基於這個原因,瀏覽器其實把下邊的正則翻譯成以下這樣:

'aaabbbcccdddeeefff'.match(/[abc]\1/g);//null
'aaabbbcccdddeeefff'.match(/([abc])\1/g);//["aa", "bb", "cc"]
'aaabbbcccdddeeefff'.match(/(([abc]))\1/g);//["aa", "bb", "cc"]
'aaabbbcccdddeeefff'.match(/(([abc]))\2/g);//["aa", "bb", "cc"]
'aaabbbcccdddeeefff'.match(/((([abc]))\2)\3/g);//["aaa", "bbb", "ccc"]

詳細請看:http://segmentfault.com/q/1010000000580762

相關推薦

關於javascript反向引用

前言:一直忙著找實習單位,足足有一個半月沒有寫過部落格,也沒有學習過,終於找到一個勉強合適的,還是趕緊加油吧,別被別人甩太遠了!(話說這天好冷啊)。 本來是在看著阿樹部落格裡的jQuery規範的,不知道怎麼搞得,稀裡糊塗的就看到正則去了,把學到的東西總結一下: 首先先看下

——反向引用

change font 引用 class pan regex 實現 內容 regexp 反向引用:捕獲組捕獲到的內容,不僅可以在正則表達式外部通過程序進行引用,也可以在正則表達式內部進行引用,這種引用方式就是反向引用 //反向引用 var str=‘#1234‘;

JavaScript表示式(基礎、分組、懶惰匹配、反向引用和零寬斷言)

進階 懶惰匹配 分組 反向引用 零寬斷言 練習 基礎 常用字元總結: ^ 匹配行的開始位置 $ 匹配行的結束位置 \b 匹配單詞的開始或結束位置 . 匹配除換行符之外的任意字元 \w 匹配單詞字元(包括字母、數字、

javascript表達式

標準 prototype 它的 nic 退格 作用 attr com 技術分享 RegExp 對象 RegExp 對象表示正則表達式,它是對字符串執行模式匹配的強大工具。 直接量語法 /pattern/attributes 創建 RegExp 對象的語法: new RegE

JavaScript表達式的學習

eight 正則 進行 劃線 包括 修飾 特定字符 span har 正則表達式的應用已經相當廣泛,之前也多次接觸,但是並未真正的系統的學習過,借此機會,好好整理了一下,並加入了es6中關於正則表達式的新語法,希望對大家有點幫助. 一、首先,了解正則表達式的含義,表示方法

JavaScript表達式知識匯總

第3版 rda abc padding java text sub data- uri Js 正則表達式知識匯總 正則表達式: 1、什麽是RegExp?RegExp是正則表達式的縮寫。RegExp 對象用於規定在文本中檢索的內容。 2、定義RegExp:v

JavaScript 表達式 string.replace( regex, "$1" );中“$1”的含義 及郵箱表達式

name itl false type 根據 fun var ext body 在使用javascrip正則表達式時,發現可以根據正則表達式取字符串內的特定字符串的內容。舉例說明: <!DOCTYPE html> <html> <hea

JavaScript表達式二

javascript正則表達式二預定義類匹配常見的字符類。常見的預定義類字符有:.除了回車符和換行符之外的所有字符 \d 數字字符\D 非數字字符\s 空白符\S 非空白符\w 單詞字符(如數字、字母和下劃線)\W 非單詞字符正則表達式還提供了幾個常用的邊界匹配字符,如:^ 以前開始$ 以末開始\b 單詞邊

JavaScript表達式三

javascript正則表達式三正則表達式對象的方法:test用於測試字符串參數中是否存在匹配正則表達式模式的字符串,如果存在返回true,不存在返回false。exec使用正則表達式模式對字符串執行搜索,並將更新全局RegExp對象的屬性以反映匹配結果。如果沒有匹配的文本則返回null,否則返回一個結果數組

JavaScript 表達式

ron ref res 一個 搜索 reg school rep 輸出 在 JavaScript 中,正則表達式通常用於兩個字符串方法 : search() 和 replace() :   search() 方法 用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子

javascript表達式筆記(轉載)

lac pre guide evel 如何 個數 doc 關於 特定 在javascript裏面的定義 1、通過RegExp構造函數定義一個正則表達式。第一個參數為正則表達式以字符串傳入,第二個參數為修飾符也以字符串傳入。 例:var caps = new RegExp

來自極客頭條的 15個常用的javaScript表達式

comment word cnp pos roc pre 顏色 月份 num 摘要收集整理了15個常用的javaScript正則表達式,其中包括用戶名、密碼強度、整數、數字、電子郵件地址(Email)、手機號碼、身份證號、URL地址、 IPv4地址、 十六進制顏色、 日期、

JavaScript 表達式(RegExp)

指定 表達 正則表達式 false logs () res exec target 什麽是RegExp RegExp是一種模式用來描述要檢索的內容。 定義RegExp 1 var patt = new RegExp("模式"); RegExp對象的方法 RegExp對象

JavaScript表達式檢驗與遞歸函數實際應用

field mda stat iss tool ring 整數 else if instance   JS遞歸函數(菲波那切數列) 實例解析: 一組數字:0 1 1 2 3 5 8 13 0 1 2 3 4 5 6

DOM筆記(十):JavaScript表達式

asc mark space $1 rep 可能 多次 -h 區分 一、RegExp ECMAScript通過RegExp類型類支持正則表達式,語法和Perl類似: var exp = /pattern/flags; patternb部分

javascript-表達式

解析 http arc 轉義 ref font pen 3-9 ron 一、正則表達式簡介 一套規則表達式 1.正則表達式的應用場景 表單驗證 解析url參數 篩選.... 2.正則表達式的定義 字面量形式 ===》 // 構造函數形式 ===》new Reg

javascript表達式——元字符

tac -s cnblogs java pan 擁有 asp 分享 cte 元字符(Metacharacter)是擁有特殊含義的字符: 元字符 描述 (1) . 查找單個字符,除

Javascript筆記

執行方法 分割 script 同時 pil 使用 last put 支持 1. 生成正則表達式對象的方法 1. var rx = new RegExp(pattern, attributes) 參數pattern是正則表達式字符串 參數attributes是一個字符串

JavaScript中12的作用

javascript 正則 jscript 一、示例1. 驗證6個相同的數字var reg = new RegExp(/^(\d)\1{5}/g); var a = ‘333333‘; if(reg.test(a)) { alert(‘right‘); } else { alert

javaScript表達式精華

之前 ons 正則表達 scrip href amp exec pac ava 本文介紹javaScript正則表達式 目錄 創建正則表達式 正則表達式flag 在字符串中使用正則表達式 正則表達式的方法 元字符 特殊字符 貪婪模式 分組 創建正則表達式 var str