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