成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js中的正則

warmcheng / 1673人閱讀

摘要:工具對象通過內(nèi)置對象支持正則,有兩種方法可實(shí)例化對象。前瞻就是在正則表達(dá)式匹配到規(guī)則的時候,向前檢查是否符合斷言,后顧后瞻方向相反。所以,為或?qū)φ齽t的匹配是兩種行為。一般是循環(huán)的寫法輸出字符串的方法例子取擴(kuò)展名替換標(biāo)簽參考慕課網(wǎng)正則

1. 工具

regexper.com

2. RegExp對象

js通過內(nèi)置對象RegExp支持正則,有兩種方法可實(shí)例化RegExp對象。

// 字面量
var reg = /is/g;
// 構(gòu)造函數(shù)
var reg = new RegExp("is","g");

g: global全文搜索,默認(rèn)只會找一個。
i: ignoreCase 忽略大小寫,默認(rèn)大小寫敏感。
m: multipe 多行。

3. 元字符

14個特殊符號;使用原義需轉(zhuǎn)義。

* + ? $ ^ . |  ( ) { } [ ]
序號 符號 說明
1 * 任意(零,一,多)
2 + 一個或多個
3 ? 零個或一個
4 $ 表達(dá)式結(jié)尾
5 ^ 方括號里表示取反;表達(dá)式開始
6 . 任意字符
7 |
8 () 分組
9 {} 量詞
10 [] 類詞
序號 字符 說明
1 t 水平制表符 tab
2 v 垂直制表符 vertical tab
3 n 換行符 line feed
4 r 回車符 return
5 0 空字符 null
6 f 換頁符 form feed
7 cX ctrl+X
4. 字符類 4.1 一般情況下正則表達(dá)式的字符和字符串的字符一一對應(yīng)
ab	

對應(yīng)

abtab
4.2 給字符歸類
[abc]指a,b,c之一
4.3 字符類取反
[^abc]指除了a,b,c之外的
4.4 范圍類
[a-zA-Z0-9]
5. 預(yù)定義類和邊界
序號 字符 等價類 說明
1 . 1 除了回車符和換行符之外的所有字符
2 d [0-9] 數(shù)字
3 D 2 非數(shù)字
4 s [tnrfv] space 空字符
5 S 3 非空字符
6 w [a-zA-Z0-9_] word 單詞 數(shù)字大小寫字母下劃線
7 W 4 非單詞
序號 字符 含義
1 ^ 以XXX開始
2 $ 以XXX結(jié)尾
3 b 單詞邊界
4 B 非單詞邊界
6. 量詞
序號 字符 含義
1 * 任意(零,一,多)
2 + 一個或多個
3 ? 零個或一個
4 {m} m次
5 {m,n} m-n次
6 {m,} 至少m次
7. 貪婪模式
str="12345678".replace(/d{3,6}/g,"$");

console.log(str);

結(jié)果:$78

默認(rèn)貪婪模式,非貪婪模式是盡可能少的匹配。做法是在量詞后面加?

str="12345678".replace(/d{3,6}?/g,"$");

console.log(str);

結(jié)果:$$78
8. 分組

byron{3}匹配n三次不是byron三次。解決就是分組。

(byron){3}

和|配合使用

byr(on|en)lich{3}

反向引用捕獲組: $1 $2 ...

str="2016-12-25".replace(/(d{4})-(d{2})-(d{2})/g,"$2/$3/$1");

結(jié)果:12/25/2016

忽略分組,在分組內(nèi)加?:

(?:Byron){3}

例子:

str="byronbyronbyron".replace(/(byron){3}/,"@$1")
"@byron"
str="byronbyronbyron".replace(/(?:byron){3}/,"@$1")
"@$1"
9. 前瞻(可加斷言)

正則表達(dá)式從文本頭部向尾部開始解析,文本尾部方向,稱為“前”。

前瞻就是在正則表達(dá)式匹配到規(guī)則的時候,向前檢查是否符合斷言,后顧/后瞻方向相反。

javaScript不支持后顧。

符合和不符合特定斷言稱為 肯定/正向 匹配和 否定/負(fù)向 匹配。

名稱 正則 例子
正向前瞻 exp(?=asset) /w(?=d)
負(fù)向前瞻 exp(?!asset) w(?!d)
正向后顧 exp(?<=asset)
負(fù)向后顧 exp(?

例子:

"a2*a3".replace(/w(?=d)/g, "@")
"@2*@3"
"a2*a3".replace(/w(?!d)/g, "@")
"a@*a@"
10. js對象屬性

利用console.dir打印reg

var reg = /w/;
console.dir(reg);
{
    flags: "",
    global: false, 
    ignoreCase: false,
    lastIndex: 0,
    multiline: false,
    source: "w",
    sticky: false,
    unicode: false,
    __proto__: Object
}
11. RegExp的test和exec函數(shù) 11.1 test

text函數(shù)用于測試字符串參數(shù)中是否存在匹配正則表達(dá)式模式的字符串;如果存在則返回true,否則返回false;

var reg=/w/;
reg.test("a");true
reg.test("a");true

var reg=/w/g;
reg.test("a");true
reg.test("a");false

出現(xiàn)上面那種情況的原因是lastIndex屬性;global為false時,該屬性無效;global為true時,該屬性會記錄上一次匹配完后的位置,并且下一次查詢會從該未知開始。

var reg=/w/g;
console.log(reg.test("a"),reg.lastIndex); true 1
console.log(reg.test("a"),reg.lastIndex); false 0

所以,global為true或false對正則的匹配是兩種行為。

11.2 exec

exec:使用正則表達(dá)式模式對字符串執(zhí)行搜索,并將更新全局RegExp對象的屬性以反映匹配結(jié)果;如果沒有匹配的文本則返回null,否則返回一個結(jié)果數(shù)組。

var reg=/wd/; 
reg.exec("a1b2c3d4e5f6ggg");
reg.exec("a1b2c3d4e5f6ggg");
兩次都返回:["a1", index: 0, input: "a1b2c3d4e5f6ggg"]
數(shù)組第一個是匹配到的結(jié)果;global為false時,只會匹配一個。
數(shù)組第二個是匹配到的結(jié)果的位置,是個對象{index:0};
數(shù)組第三個是匹配的字符串

global為true時,兩次返回的結(jié)果不一樣。

var reg=/wd/g; 
reg.exec("a1b2c3d4e5f6ggg");
reg.exec("a1b2c3d4e5f6ggg");
返回:
["a1", index: 0, input: "a1b2c3d4e5f6ggg"]
["b2", index: 2, input: "a1b2c3d4e5f6ggg"]

有分組時:

var reg=/(w)d/g; 
reg.exec("a1b2c3d4e5f6ggg");
reg.exec("a1b2c3d4e5f6ggg");
["a1", "a", index: 0, input: "a1b2c3d4e5f6ggg"]
["b2", "b", index: 2, input: "a1b2c3d4e5f6ggg"]
多了分組的數(shù)據(jù)。

一般是循環(huán)的寫法:

var ts = "a1b2c3d4e5f6ggg"
var reg=/(w)d/g; 
while(ret=reg.exec(ts)){
    console.log(ret.toString());
}

輸出

a1,a
b2,b
c3,c
d4,d
e5,e
f6,f
12. 字符串的方法 12.1 str.search
string.search(str,replaceStr);
string.search(reg,replaceStr);
12.2 str.mathch
string.match(str,replaceStr);
string.match(reg,replaceStr);
12.3 str.replace
string.replace(str,replaceStr);
string.replace(reg,replaceStr);
string.replace(reg,function);
13. 例子
// 取擴(kuò)展名
const str = "http://file.xxx.com/test/2017/09/19/34457aef4a9649e2af2f1d4e9c14d0d3.mp4";
const reg = new RegExp("^http:[/w.]*/(w*).mp4$");
const result = reg.exec(str);
console.log(result[1]);// 34457aef4a9649e2af2f1d4e9c14d0d3
// 替換source標(biāo)簽
const str = "aaabbb";

const result = str.replace(//g,"");
console.log(result);// aaabbb

參考:慕課網(wǎng)js正則

  • rn ?

  • 0-9 ?

  • tnrfv ?

  • a-zA-Z0-9_ ?

  • 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86893.html

    相關(guān)文章

    • 正則JS中的正則

      摘要:注意本文將正則與中的正則分開討論。正則零寬斷言更多參考各種語言對于正則不同支持參考單行模式與多行模式通過設(shè)置正則表達(dá)式后的修飾符可開啟對應(yīng)的匹配模式單行模式和多行模式。 最近這段時間幫同學(xué)處理一些文檔, 涉及到一些結(jié)構(gòu)化文檔的工作大部分都得使用正則表達(dá)式, 之前對于正則的認(rèn)識大多來源于語言書上那幾頁的介紹, 自己也沒有用過幾次。這里將我之前感到模糊的概念作個整理。因?yàn)閷S了解多點(diǎn),所...

      firim 評論0 收藏0
    • JS正則表達(dá)式一條龍講解,從原理和語法到JS正則、ES6正則擴(kuò)展,最后再到正則實(shí)踐思路

      摘要:控制權(quán)和傳動這兩個詞可能在搜一些博文或者資料的時候會遇到,這里做一個解釋先控制權(quán)是指哪一個正則子表達(dá)式可能為一個普通字符元字符或元字符序列組成在匹配字符串,那么控制權(quán)就在哪。 溫馨提示:文章很長很長,保持耐心,必要時可以跳著看,當(dāng)然用來查也是不錯的。 正則啊,就像一座燈塔,當(dāng)你在字符串的海洋不知所措的時候,總能給你一點(diǎn)思路;正則啊,就像一臺驗(yàn)鈔機(jī),在你不知道用戶提交的鈔票真假的時候,...

      Michael_Lin 評論0 收藏0
    • JS正則表達(dá)式元字符

      摘要:表示非單詞字符,等效于正則教程返回完整的字符串,因?yàn)?,中文算作是非單詞字符。行首行尾,修飾符形式修飾符的作用是修改和在正則表達(dá)式中的作用,讓它們分別表示行首和行尾。 正則 描述 正則 描述 f 匹配換頁符 匹配制表符 匹配換行符 v 匹配垂直制表符 匹配回車 s 匹配單個空格,等同于[f v]; S...

      CODING 評論0 收藏0
    • JS中的正則表達(dá)式

      摘要:構(gòu)造函數(shù)可以有兩個字符串參數(shù),第一個參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說明這個正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門:初探正則表達(dá)式 正則表達(dá)式是一個描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...

      Soarkey 評論0 收藏0
    • js正則表達(dá)式學(xué)習(xí)筆記

      摘要:說來慚愧,做前端快三年對于正則表達(dá)式的應(yīng)用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語法和規(guī)則,這次項(xiàng)目中多次用到了需要匹配替換的動作,終于下定決心去研究一下了。 說來慚愧,做前端快三年對于正則表達(dá)式的應(yīng)用還是很淺薄,大家都知道正則的速度基本上是最快的,但就是懶得去記那些語法和規(guī)則,這次項(xiàng)目中多次用到了需要匹配替換的動作,終于下定決心去研究一下了。 實(shí)例化正則對...

      Towers 評論0 收藏0
    • 正則表達(dá)式

      摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號手機(jī)號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語法在中使用正則表達(dá)式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計(jì)》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時指出書里的一些問題。將會討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時器等話題。1. 安全的類型檢測...

      yibinnn 評論0 收藏0

    發(fā)表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <