目錄
一、子表示式
二、正向預查
三、**例項
概念
正規表示式中將小括號包裹的部分稱為子表示式。正規表示式含有子表示式時,執行match(正規表示式不能帶修飾符g)或exec方法時,所有子表示式的匹配字串會作為乙個個陣列元素插入到返回結果的末尾。
var str = "abcdefg";
var reg = /(a)bc(defg)/;
console.log(str.match(reg));
// ["abcdefg", "a", "defg", index: 0, input: "abcdefg", groups: undefined]
//第乙個元素表示匹配結果, 第二個元素表示第乙個子表示式, 第二個元素表示第三個子表示式
var str = "abcdefg";
var reg = /(a)bc(defg)/g;
console.log(str.match(reg)); //["abcdefg"]
var str = "aabb";
var reg = /(\w)\1(\w)\2/g;
console.log(reg.exec(str));
//["aabb", "a", "b", index: 0, input: "aabb", groups: undefined]
//返回的結果陣列中多出了兩位,分別是兩個子表示式的匹配字串
//匹配abc或qwe
var str = "abcdeqwe";
var reg = /(abc|qwe)/g;
console.log(str.match(reg)); //["abc", "qwe"]
var reg = /abc|qwe/g;
console.log(str.match(reg)); //["abc", "qwe"]
//將|左右各看成乙個整體, 即使沒有()
反向引用
表示式引擎會將子表示式匹配的字串記錄下來以供單獨獲取。反向引用是指正規表示式後面的部分可以引用前面子表示式的內容,引用方法是反斜槓加數字,如\1表示引用第乙個子表示式匹配的內容,\2表示引用第二個子表示式匹配的內容......依次類推。如果一對括號內包含另一對括號,則外層的括號先排序。
**例項
var reg = /(a)\1(b)\2/; //\1表示反向引用第乙個子表示式的內容
var str = "aabb";
console.log(str.match(reg));
//["aabb","a","b",index:0,input:"aabb",groups:undefined]
//第乙個元素表示匹配結果, 第二個元素和第三個元素表示記錄的子表示式
var reg = /(a)\1\1\1/;
var str = "aaaa";
console.log(str.match(reg));
//["aaaa","a",index:0,input:"aaaa",groups:undefined]
//第乙個元素表示匹配結果, 第二個元素表示記錄的子表示式
var str = "abb";
var reg = /(a(b))\2/;
console.log(str.match(reg));
//["abb", "ab", "b", index: 0, input: "abb", groups: undefined]
正向預查又稱正向斷言,其本身不會匹配字串,而是提供給前面子串更精確的匹配。js中正規表示式不支援反向預查。
正向肯定預查(?=n):匹配其後緊跟指定字串n的子串
正向否定預查(?!n):匹配其後沒有緊跟指定字串n的子串
var str="is this all there is";
var reg=/is(?= all)/g;
console.log(str.match(reg)); //["is"]
var str="is this all there is";
var reg=/is(?! all)/g;
console.log(str.match(reg)); //["is"]
//寫乙個正規表示式,檢驗字串首尾是否含有數字
var reg = /^\d|\d$/;
//寫乙個正規表示式,檢驗字串首尾均含有數字
var reg = /^\d[\s\s]*\d$/; //中間使用區間拉伸
//寫乙個正規表示式,匹配四個連續單詞字元
var reg = /(\w)\1\1\1/;
//寫乙個正規表示式,匹配形如aabb這種格式的連續的單詞字元
var reg = /(\w)\1(\w)\2/;
//寫乙個正規表示式,實現aaaaaabbbbbccccc去重,輸出abc
var str = "aaaaaabbbbbccccc";
var reg = /(\w)\1*/g;
console.log(str.replace(reg,"$1")); //"abc"
var str = "100000000";
var reg = /(?=(\b)(\d)+$)/g;
console.log(str.replace(reg, ".")); //"100.000.000"
正規表示式校驗** 正規表示式三
正規表示式通常包含字母文字 literaltext 和元字元 metacharacter 字母文字指的是普通文字如 abcde 可匹配字串中任何包含 abcde 的字串。元字元則更加靈活運用通用的表示式匹配所有符合此表示式規律的字串。c 正規表示式語法一 匹配單個字元 從中選擇乙個字元匹配 中間支援...
正規表示式 三
標題 正規表示式 三 dragontt 原作 關鍵字正規表示式 前面的文章中,介紹了正規表示式的基本語法,以及一些簡單的例子。但這些並不是我們會遇到的全部問題,有些時候我們不得不編寫一些較為複雜的正規表示式來解決我們的實際問題。這裡,我先提幾個問題,然後,我們逐個運用正規表示式的知識來解決。1 符合...
正規表示式 三
能夠於 多種字元 匹配的表示式 正規表示式中的一些表達方法,可以匹配 多個字元 其中的任意乙個字元,比如,表示式 d 可以匹配任意乙個數字。雖然可以匹配其中任意字元,但是只能是乙個,不是多個,這就好比撲克牌時候,大熊澳網可以代替任意一張牌,但是只能代替一張牌。匹配多種字元 1 表示式可匹配 d任意乙...