正則表達(dá)式

兩種創(chuàng)建方式

????● 直接量

? ????????var reg = /abc/i; // i 忽略大小寫(xiě) g 全局匹配 m 多行匹配?

? ? ? ? ? ?var str = "abcd"

? ? ? ? ? ?console.log(reg.test(str)) // true?

? ? ? ? ? ? reg.test() // 判斷有沒(méi)有符合要求的片段 返回true/false

? ? ? ? ? ? str.match(reg) // 匹配符合要求的片段 返回?cái)?shù)組


? ? ? ? //?g 全局匹配

????????????var reg = /ab/;

? ? ? ? ? ? var str = "abababababab";

? ? ? ? ? ? console.log(str.match(reg)) // ["ab"]


? ??????????var reg = /ab/g;

? ???????????console.log(str.match(reg)) // ["ab", "ab", "ab", "ab", "ab", "ab"]


? ? ? ? // m 多行匹配

? ? ? ? ? ? var reg = /a/g;

? ? ? ? ? ? var str = "abcda";

? ??????????console.log(str.match(reg)) // ["a", "a"]


? ??????????var reg = /^a/g; // ^ 以a開(kāi)頭的a

? ??????????console.log(str.match(reg)) // ["a"]


????????????var reg = /a/gm;

????????????var str = "abcd\na";

? ??????????console.log(str.match(reg)) // ["a", "a"]

????● new RegExp()

? ? ? ? ? ? var reg = new RegExp("abc", "i")

? ? ? ? ? ? var str = "abcd"

? ??????????console.log(reg.test(str)) // true


表達(dá)式

表達(dá)式


var reg = /[ab][cd][d]/g;

//?var reg = /[0-9A-z][cd][d]/g;

//?var reg = /[^a][^b]/g; // ^在表達(dá)式里表示非

// var reg = /(abc|bcd)/g; // |表示或

var str =?"abcd";

console.log(str.match(reg)) // ["bcd"]


元字符


元字符

// \w === [0-9A-z_]

// \W === [^w]

var reg = /\wcd/g;

var str = "abc";

console.log(str.match(reg)); // ["bcd"]


// \d === [0-9]

// \D === [^\d]

var reg = /\d\d\d/g;

var str = "123";

console.log(str.match(reg)); // ["123"]

var reg = /\w\d/g;

var str = "s";

console.log(str.match(reg)); // ["s"]


// \s === [\t\r\n\v\f]? 包含 空格符、\t(制表符)、\r(回車(chē)符)、\n(換行符)、\v(垂直換行符)、\f(換頁(yè)符)

// \S === [^\s]

var reg = /\tc/g;

var str = "abc\tcdefgh";

console.log(str.match(reg)); // ["? ? c"]


// \b === 單詞邊界

// \B === 非單詞邊界

var reg = /\bcde/g;

var str = "abc cde fgh";

// var reg = /\bcde\B/g;

// var str = "abc cdefgh";

console.log(str.match(reg)); // ["cde"]


// . === [^\r\n]

var reg = /./g;

var str = "你好 世界";

console.log(str.match(reg)) //?["你", "好", " ", "世", "界"]


量詞


量詞

// n+ {1, Infinity}? // 1到無(wú)窮個(gè)

// n* {0, Infinity} // 0到無(wú)窮個(gè)

var reg = /\w+/g;

var str = "abc";

console.log(str.match(reg)); //?["abc"]

var reg = /\w*/g;

var str = "abc";

console.log(str.match(reg)); //?["abc", ""] // 貪婪匹配原則 能多不能少


// n? {0, 1} // 0或1個(gè)

var reg = /\w?/g;

var str = "abc";

console.log(str.match(reg)); //?["a", "b", "c", ""]


n{x} {x} // x個(gè)

var reg = /\w{2}/g;

var str = "abc";


console.log(str.match(reg)); //?["ab"]


n{x} {x,y} // x到y(tǒng)個(gè)

var reg = /\w{3,5}/g;

var str = "aaaaaaaaaaaaaaaaaa";

console.log(str.match(reg)); //?["aaaaa", "aaaaa", "aaaaa", "aaa"]


n{x, } {x,Infinity} // x到無(wú)窮個(gè)

var reg = /\w{2,}/g;

var str = "aaaaaaaaaaaaaaaaaa";

console.log(str.match(reg)); // ["aaaaaaaaaaaaaaaaaa"]


n$ // 以n結(jié)尾

var reg = /ed$/g;

var str = "abcded";

console.log(str.match(reg)); //?["ed"]


檢驗(yàn)一個(gè)字符串首尾是否含有數(shù)字

var reg = /^\d|\d$/g;

var str = "123abc";

console.log(reg.test(str)); // true

檢驗(yàn)一個(gè)字符串首尾是否都含有數(shù)字

var reg = /^\d[\s\S]*\d$/g;

var str = "123abc";

console.log(reg.test(str)); // true


屬性


屬性

var reg = /^\d[\s\S]*\d$/g;

console.log(reg.ignoreCase); // false

console.log(reg.global); // true

console.log(reg.multiline); // false

console.log(reg.source); // "/^\d[\s\S]*\d$/g"


方法


方法

// reg.exec()

//?reg.lastIndex

var reg = /ab/g;

var str = "abababab";

console.log(reg.lastIndex);?// 0

console.log(reg.exec(str)); //?["ab", index: 0, input: "abababab", groups: undefined]

console.log(reg.lastIndex);?// 2

console.log(reg.exec(str)); //?["ab", index: 2, input: "abababab", groups: undefined]

console.log(reg.lastIndex);?// 4

console.log(reg.exec(str)); //?["ab", index: 4, input: "abababab", groups: undefined]

console.log(reg.lastIndex);?// 6

console.log(reg.exec(str)); //?["ab", index: 6, input: "abababab", groups: undefined]

console.log(reg.lastIndex);?// 8

console.log(reg.exec(str)); //?null

console.log(reg.lastIndex);?// 0

console.log(reg.exec(str)); //?["ab", index: 0, input: "abababab", groups: undefined]


匹配 xxxx

var str = "aaaabbbb";

var reg = /(\w)\1\1\1/g;

console.log(str.macth(reg)); //??["aaaa", "bbbb"]

匹配 xxyy

var str = "aabb";

var reg = /(\w)\1(\w)\2/g;

console.log(str.match(reg)); //? ["aabb"]

// match不加g和exec一樣 ↓

console.log(reg.exec(str)); //?["aabb", "a", "b", index: 0, input: "aabb", groups: undefined]


支持正則表達(dá)式的String對(duì)象方法

支持正則表達(dá)式的String對(duì)象方法

// search 返回第一次匹配到的位置 匹配不到返回-1

var str = "aabb";

var reg = /(\w)\1(\w)\2/g;

console.log(str.search(reg)); // 0

var str = "edbaabb";

console.log(str.search(reg)); // 3


// split

var str = "123abbc4dd5e6fgg";

var reg = /(\w)\1/

console.log(str.split(reg)); //?["123a", "b", "c4", "d", "5e6f", "g", ""]

var str = "123abbc4dd5e6fggh";

console.log(str.split(reg)); //?["123a", "b", "c4", "d", "5e6f", "g", "h"]


!// replace

var str = "aa";

console.log(str.replace("a", "b")); // ba

var reg = /a/g;

console.log(str.replace(reg, "b")); // bb

// aabb => bbaa

var reg = /(\w)\1(\w)\2/g;

var str = "aabb";

console.log(str.replace(reg, "$2$2$1$1")); // bbaa

console.log(str.replace(reg, function($, $1, $2) { // $=>正則表達(dá)式匹配的結(jié)果

? ? return $2 + $2 + $1 + $1;? // bbaa

}))

// the-first-name => theFirstName

var reg = /-(\w)/g;

var str = "the-first-name";

console.log(str.replace(reg, function($, $1) {

????return $1.toUpperCase(); //?"theFirstName"

}))


// 正向預(yù)查/正向斷言

var str = "abaaaaa";

var reg = /a(?=b)/g;

console.log(str.macth(reg)); //?["a"]

var reg = /a(?!b)/g;

console.log(str.macth(reg)); //?["a", "a", "a", "a", "a"]


// 貪婪匹配

var str = "aaaaaa";

var reg = /a+/g;

console.log(str.match(reg)); //?["aaaaaa"]

// 非貪婪匹配 加問(wèn)號(hào)

var reg = /a+?/g;

console.log(str.match(reg)); //?["a", "a", "a", "a", "a", "a"]

var reg = /a??/g;

console.log(str.match(reg)); // ["", "", "", "", "", "", ""]


// 去重

var str = "aaaaaabbbbbbcccccc";

var reg = /(\w)\1*/g;

console.log(str.replace(reg, "$1")); //?abc


// 100000000

var str = "100000000000";

var reg = /(?=(\B)(\d{3})+$)/g;

console.log(str.replace(reg, ".")); //?"100.000.000.000"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • //定義正則表達(dá)式的兩種方式,在用構(gòu)造函數(shù)的時(shí)候,有些地方是要加轉(zhuǎn)義字符的。 //1、字面量。 var reg =...
    xiaobing0324閱讀 565評(píng)論 0 0
  • 1,正則表達(dá)式的作用:匹配一個(gè)字符串中的一些內(nèi)容 2,聲明和使用: 1)構(gòu)造函數(shù) var reg=new RegE...
    WDL_1a39閱讀 862評(píng)論 0 1
  • 1. 概念 正則表達(dá)式描述了一種字符串匹配的模式,可以用來(lái)檢查一個(gè)字符串是否含有某種子串、將匹配的子串做替換或者從...
    沈林生閱讀 24,077評(píng)論 0 2
  • 問(wèn)答 \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分別是什么?答:\d 查找數(shù)...
    饑人谷_桶飯閱讀 340評(píng)論 0 1
  • 水果之中的梨子具有生津、潤(rùn)燥、清熱、化痰等眾多功效,據(jù)說(shuō)梨子是百果之宗,這個(gè)說(shuō)法不知是否是真,但梨子有很高...
    生活探秘閱讀 383評(píng)論 0 5

友情鏈接更多精彩內(nèi)容