摘要:返回值是被找到的值。序列匹配,而則匹配。還有關(guān)于如何選擇一個(gè)這里的,轉(zhuǎn)換成文本后,只表示一個(gè)就是說這段待執(zhí)行文本內(nèi)含一個(gè)構(gòu)建正則思考一下創(chuàng)建正則的幾種方式并且多認(rèn)識一個(gè)正則方法匹配前面的子表達(dá)式一次或多次。和均為非負(fù)整數(shù),其中。
JavaScript RegExp 對象 :測試工具:REGEXPER
通過 new 關(guān)鍵詞來定義 RegExp 對象。
test()test() 方法檢索字符串中的指定值。返回值是 true 或 false。
var r = new RegExp("e"); var str = "hello world!"; alert(r.test(str)) // trueexec()
exec() 方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發(fā)現(xiàn)匹配,則返回 null。
var r = new RegExp("e"); var str = "hello world!"; alert(r.exec(str)); // "e"
這些是JS RegExp提供的一些方法,簡單介紹下;
字面量var reg = /is/;
這就是一個(gè)簡單的字面量正則賦值
:將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符。例如, "n" 匹配字符 "n"。" " 匹配換行符。序列 "" 匹配 "",而 "(" 則匹配 "("。
還有關(guān)于如何選擇一個(gè)?
var str1 = "aaaAAA"; // 這里的,轉(zhuǎn)換成文本后,只表示一個(gè),就是說這段待執(zhí)行文本內(nèi)含一個(gè) console.log(str1); // "aaaAAA" var r = new RegExp(//); // 構(gòu)建正則 console.log(str1.replace(r,"R")); // "aaaRAAA"思考一下創(chuàng)建正則的幾種方式,并且多認(rèn)識一個(gè)正則方法 +:匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請使用 +。
var s = "ffffdffffdffffdd"; var r = /d/; // "Sffffdffffdffffd" var r1 = new RegExp("d"); // "Sffffdffffdffffd" var r2 = new RegExp(/d/); // "Sffffdffffdffffd" var r3 = new RegExp("d"); // "Sffffdffffdffffd" var R = /d+/; // "S" var R1 = new RegExp("d+") // "S" var R2 = new RegExp(/d+/); // "S" var R3 = new RegExp("d+"); // "S" // console.log(s.replace(rX,"S")):匹配一個(gè)字邊界,即字與空格間的位置。(不是空格!??!)
var reg = /is/; var str = "He is a boy. This is a dog. Where is she?"; console.log( str.replace(reg,"IS") ); // "He IS a boy. This is a dog. Where is she?" // 使用replace方法,將按照正則規(guī)則選擇到的字符串(... is ...)替換為"IS",但是我們發(fā)現(xiàn)只有第一句被替換
只有第一句被替換?引出我們的:
g:執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)在一段字符串中,可能存在若干符合正則的選擇,不執(zhí)行全局g,只會選擇第一個(gè),執(zhí)行全局g,所有符合的都會被選擇到。
另一種說法:global可選標(biāo)志,帶這個(gè)標(biāo)志表示替換將針對行中每個(gè)匹配的串進(jìn)行,否則則只替換行中第一個(gè)匹配串
reg = /is/g; console.log(str.replace(reg,"IS")); // "He IS a boy. This IS a dog. Where IS she?".:除了換行符以外的任意字符。要匹配包括 "n" 在內(nèi)的任何字符,請使用像"(.| )"的模式。 *:匹配前面的子表達(dá)式零次或多次 OR (*前邊的內(nèi)容可以連續(xù)重復(fù)使用任意次以使整個(gè)表達(dá)式得到匹配)
例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。
PS:.*連在一起就意味著任意數(shù)量的不包含換行的字符
var str = "ffffdffffd dfdf"; console.log(str); // "ffffdffffd // dfdf" 這里文本排列錯(cuò)誤,但是知道里面存在一個(gè)換行符就對了 var reg = /.*/; console.log(str.replace(reg,"X")); // "X // dfdf" 選擇了換行符前面的任意字符(這里重復(fù)任意次)d:匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]。 D:匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。
這里要提到一個(gè)中括號:
[a-z]:字符范圍。匹配指定范圍內(nèi)的任意字符。例如,"[a-z]" 可以匹配 "a" 到 "z" 范圍內(nèi)的任意小寫字母字符。(包括本身)var str = "a1b2c3d4"; var reg = /d/; // 選擇一個(gè)數(shù)字字符(而已)哪怕有更多選擇只選擇第一個(gè)遇到的 console.log(str.replace(reg,"X")); // "aXb2c3d4" reg = /d/g; // 在全局中,選擇數(shù)字字符,并返回多個(gè)(如果存在)符合規(guī)則的字串 console.log(str.replace(reg,"X")); // "aXbXcXdX" reg = /[a-z]d/g // 一個(gè)a-z任意字符和一個(gè)數(shù)字字符,并返回多個(gè)(如果存在)符合規(guī)則的字串 console.log(str.replace(reg,"X")); // "XXXX" reg = /[a-z]d/ // 一個(gè)a-z任意字符和一個(gè)數(shù)字字符 console.log(str.replace(reg,"X")); // "Xb2c3d4" // D 匹配一個(gè)非數(shù)字字符,與d相反 str = "123ABC" reg = /D/; console.log(str.replace(reg,"0")); // "1230BC" reg = /D/g; // 一個(gè)非數(shù)字字符,并返回多個(gè)(如果存在)符合規(guī)則的字串 console.log(str.replace(reg,"0")); // "123000" reg = /D{3}/; // 三個(gè)連續(xù)的非數(shù)字字符 console.log(str.replace(reg,"456")); // "123456" // 區(qū)分大小寫 str = "A1B2C3d4" reg = /[A-Z]/g; // 選擇A-Z大寫字母任意一個(gè),并返回多個(gè)(如果存在)符合規(guī)則的字串 console.log(str.replace(reg,"O")) // "O1O2O3d4" reg = /[A-Z]d/; // 選擇A-Z大寫字母任意一個(gè)和一個(gè)數(shù)字 console.log(str.replace(reg,"O")) // "OB2C3d4" reg = /[A-Z]d/g; // 選擇A-Z大寫字母任意一個(gè)和一個(gè)數(shù)字,并返回多個(gè)(如果存在)符合規(guī)則的字串 console.log(str.replace(reg,"O")) // "OOOd4"
和大括號:
{n}:n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,"o{2}" 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的兩個(gè) o。 {n,}:n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,"o{2,}" 不能匹配 "Bob" 中的 "o",但能匹配 "foooood" 中的所有 o。"o{1,}" 等價(jià)于 "o+"。"o{0,}" 則等價(jià)于 "o*"。 {n,m}:m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。"o{0,1}" 等價(jià)于 "o?"。請注意在逗號和兩個(gè)數(shù)之間不能有空格。 ?:匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價(jià)于 {0,1}。 +:匹配前面的子表達(dá)式一次或多次。例如,"zo+" 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價(jià)于 {1,}。還有之前的:
*:匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。以上5種在正則中被成為限定符,很好理解,限制匹配次數(shù)嘛
var str = "A1234B123C123456"; var reg = /d{4}/; // {4}之前的d重復(fù)匹配4次 console.log(str.replace(reg,"&")); // "A&B123C123456" reg = /d{6}/ // 重復(fù)6次 console.log(str.replace(reg,"&")); // "A1234B123C&" reg = /[A-Z]d{6}/ // 一個(gè)A-Z任意字母,和一個(gè)連續(xù)6個(gè)任意數(shù)字 console.log(str.replace(reg,"&")) // "A1234B123&" str = "000&1111&222222&55555555&"; reg = /d{4,}/; // 一個(gè)數(shù)字,至少匹配4次 console.log(str.replace(reg,"——")); // "000&——&222222&55555555&" reg = /d{4,}/g; // (一個(gè)數(shù)字,至少匹配4次),并返回多個(gè)符合規(guī)則的匹配串 console.log(str.replace(reg,"——")); // "000&——&——&——&" reg = /d{4,6}/g; // (一個(gè)數(shù)字,至少4次,至多6次) console.log(str.replace(reg,"——")); // "000&——&——&——55&" reg = /d?/g; // 等價(jià)于:{0,1} console.log(str.replace(reg,"?")); // "????&?????&???????&?????????&?" reg = /d+/; // 等價(jià)于:{1,} console.log(str.replace(reg,"+")); // "+&1111&222222&55555555&" reg = /d+/g; console.log(str.replace(reg,"+")); // "+&+&+&+&" reg = /d*/g; console.log(str.replace(reg,"+")); // "++&++&++&++&+"
正則表達(dá)式30分鐘入門教程
正則表達(dá)式語言
正則表達(dá)式
正則表達(dá)式全部符號解釋
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83157.html
摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門:初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...
摘要:直接量語法創(chuàng)建對象的語法參數(shù)參數(shù)是一個(gè)字符串,指定了正則表達(dá)式的模式或其他正則表達(dá)式。方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。 直接量語法/pattern/attributes 創(chuàng)建 RegExp 對象的語法:new RegExp(pattern, attributes); 參數(shù)參數(shù) pattern 是一個(gè)字符串,指定了正則表達(dá)式的模式或其他正則表...
摘要:返回值是被找到的值。支持正則表達(dá)式的對象的方法方法檢索與正則表達(dá)式相匹配的子字符串。該數(shù)組是通過在指定的邊界處將字符串分割成子串創(chuàng)建的。注意報(bào)錯(cuò)正確示例附表修飾符修飾符描述執(zhí)行對大小寫不敏感的匹配。查找以十六進(jìn)制數(shù)規(guī)定的字符。 什么是 RegExp? RegExp 是正則表達(dá)式的縮寫。 當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來描述要檢索的內(nèi)容。RegExp 就是這種模式。 簡單的模式可以...
摘要:控制權(quán)和傳動(dòng)這兩個(gè)詞可能在搜一些博文或者資料的時(shí)候會遇到,這里做一個(gè)解釋先控制權(quán)是指哪一個(gè)正則子表達(dá)式可能為一個(gè)普通字符元字符或元字符序列組成在匹配字符串,那么控制權(quán)就在哪。 溫馨提示:文章很長很長,保持耐心,必要時(shí)可以跳著看,當(dāng)然用來查也是不錯(cuò)的。 正則啊,就像一座燈塔,當(dāng)你在字符串的海洋不知所措的時(shí)候,總能給你一點(diǎn)思路;正則啊,就像一臺驗(yàn)鈔機(jī),在你不知道用戶提交的鈔票真假的時(shí)候,...
摘要:玩轉(zhuǎn)對象中的正則表達(dá)式的正則表達(dá)式語法極大地借鑒了另一種腳本語言的正則表達(dá)式語法對象是的一個(gè)內(nèi)置對象,與,類似。創(chuàng)建對象可通過構(gòu)造函數(shù)創(chuàng)建。當(dāng)要根據(jù)用戶輸入來構(gòu)造正則表達(dá)式時(shí),必須采用構(gòu)造函數(shù)方式。如與被看做相同的字符模式。 玩轉(zhuǎn)javascript RegExp對象 js中的正則表達(dá)式 js的正則表達(dá)式語法極大地借鑒了另一種腳本語言Perl的正則表達(dá)式語法.RegExp對象是js的一...
摘要:正則表達(dá)式一直是里比較難以掌握的點(diǎn)。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達(dá)式的字面量語法,表示正則表達(dá)式的模式,為正則表達(dá)式的標(biāo)志。字面量形式的正則表達(dá)式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習(xí)慣。 正則表達(dá)式一直是js里比較難以掌握的點(diǎn)。 看不懂,學(xué)不會,記不住。 每次需要用到正則的時(shí)候,都需要再去查找資料。 今天花時(shí)間把正則的知識點(diǎn)總結(jié)下,希望...
閱讀 1275·2023-04-26 01:38
閱讀 1472·2021-11-15 11:39
閱讀 3264·2021-09-22 15:43
閱讀 2659·2019-08-30 15:55
閱讀 2059·2019-08-30 14:17
閱讀 2861·2019-08-29 14:16
閱讀 3072·2019-08-26 18:36
閱讀 2616·2019-08-26 12:19