require(['jquery'], function($) {
// RegExp 對象
// RegExp 對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。
// 直接量語法
// /pattern/attributes
// 創(chuàng)建 RegExp 對象的語法:
var pattern = "[abc]";
var attributes = "g";
var myReg = new RegExp(pattern, attributes);
// 參數 pattern 是一個字符串,指定了正則表達式的模式或其他正則表達式。
// 參數 attributes 是一個可選的字符串,包含屬性 "g"、"i" 和 "m",分別用于指定全局匹配、區(qū)分大小寫的匹配和多行匹配。
// 返回值
// 一個新的 RegExp 對象,具有指定的模式和標志。如果參數 pattern 是正則表達式而不是字符串,那么 RegExp() 構造函數將用與指定的 RegExp 相同的模式和標志創(chuàng)建一個新的 RegExp 對象。
// 如果不用 new 運算符,而將 RegExp() 作為函數調用,那么它的行為與用 new 運算符調用時一樣,只是當 pattern 是正則表達式時,它只返回 pattern,而不再創(chuàng)建一個新的 RegExp 對象。
// 方括號用于查找某個范圍內的字符:
// [abc] 查找方括號之間的任何字符。
console.log(/[abc]/.test("abc"));
// 結果:true
console.log(/[abc]/.test("defg"));
// 結果:false
// [^abc] 查找任何不在方括號之間的字符。
console.log(/[^abc]/.test("abc"));
// 結果:false
console.log(/[^abc]/.test("defg"));
// 結果:true
// [0-9] 查找任何從 0 至 9 的數字。
console.log(/[0-9]/.test("a1b2c3"));
// 結果:true
console.log(/[0-9]/.test("abc"));
// 結果:false
// [a-z] 查找任何從小寫 a 到小寫 z 的字符。
// [A-Z] 查找任何從大寫 A 到大寫 Z 的字符。
// [A-z] 查找任何從大寫 A 到小寫 z 的字符。
console.log(/[a-z]/.test("abc"));
// 結果:true
console.log(/[A-Z]/.test("abc"));
// 結果:false
console.log(/[A-z]/.test("abc"));
// 結果:true
// (red|blue|green) 查找任何指定的選項。
var reg1 = new RegExp("blue|abl1");
console.log(reg1.test("ablue"));
// 結果:true
console.log(reg1.test("abl1ue"));
// 結果:true
// 元字符(Metacharacter)是擁有特殊含義的字符:
// . 查找單個字符,除了換行和行結束符。
var reg2 = new RegExp("h.t");
console.log(reg2.test("That's hot!"));
// 結果:true (hat,hot都是)
console.log(reg2.exec("That's hot!"));
// 結果:["hat", index: 1, input: "That's hot!"] 查找第一個匹配,如果使用g屬性,就會指向最后一個匹配的["hot", index: 7, input: "That's hot!"]
// \w 查找單詞字符。
console.log(/\w/.exec("Give 100%!"));
// 結果:["G", index: 0, input: "Give 100%!"]
// \W 查找非單詞字符。
console.log(/\W/.exec("Give 100%!"));
// 結果:[" ", index: 4, input: "Give 100%!"]
// \d 查找數字。
console.log(/\d/.exec("Give 100%!"));
// 結果:["1", index: 5, input: "Give 100%!"]
// \D 查找非數字字符。
console.log(/\D/.exec("Give 100%!"));
// 結果:["G", index: 0, input: "Give 100%!"]
// \s 查找空白字符。
console.log(/\s/.exec("Give 100%!"));
// 結果:[" ", index: 4, input: "Give 100%!"]
// \S 查找非空白字符。
console.log(/\S/.exec("Give 100%!"));
// 結果:["G", index: 0, input: "Give 100%!"]
// \b 匹配單詞邊界。在單詞邊界匹配的位置,單詞字符后面或前面不與另一個單詞字符直接相鄰
// 如果未找到匹配,則返回 null。
// /\bm/ 匹配 "moon" 中的 'm';
// /oo\b/ 不匹配 "moon" 中的 'oo',因為 'oo' 后面的 'n' 是一個單詞字符;
// /oon\b/ 匹配 "moon" 中的 'oon',因為 'oon' 位于字符串的末端,后面沒有單詞字符;
// /\w\b\w/ 不匹配任何字符,因為單詞字符之后絕不會同時緊跟著非單詞字符和單詞字符
console.log(/\bWo/.exec("Hello World"));
// 結果:["Wo", index: 6, input: "Hello World"]
console.log(/\bor/.exec("Hello World"));
// 結果:null
// \B 匹配非單詞邊界。匹配位置的上一個和下一個字符的類型是相同的:即必須同時是單詞,或必須同時是非單詞字符。字符串的開頭和結尾處被視為非單詞字符。
console.log(/\BWo/.exec("Hello World"));
// 結果:null
console.log(/\Bor/.exec("Hello World"));
// 結果:["or", index: 7, input: "Hello World"]l
// \n 查找換行符。
console.log(/\n/.exec("Hello World.\nLearn Javascript."));
// \f 查找換頁符。
// \r 查找回車符。
// \t 查找制表符。
// \v 查找垂直制表符。
// \xxx 查找以八進制數 xxx 規(guī)定的字符。
// 八進制 127 (W)
console.log(/\127/.exec("Hello World.World is wonderful!"));
// 結果:["W", index: 6, input: "Hello World.World is wonderful!"]
// \xdd 查找以十六進制數 dd 規(guī)定的字符。
// \uxxxx 查找以十六進制數 xxxx 規(guī)定的 Unicode 字符
// 量詞
// n+ 匹配任何包含至少一個 n 的字符串。
console.log(/o+/.exec("Hello World.World is wonderful!"));
// 結果:["o", index: 4, input: "Hello World.World is wonderful!"]
// n* 匹配任何包含零個或多個 n 的字符串。
console.log(/Wo*/.exec("Hello World.World is wonderful!"));
// 對 "W" 進行全局搜索,包括其后緊跟的一個或多個 "o":
// 結果:["", index: 0, input: "Hello World.World is wonderful!"]
// n? 匹配任何包含零個或一個 n 的字符串。
console.log(/10?/.exec("1, 100 or 1000?"));
// 結果:["1", index: 0, input: "1, 100 or 1000?"] (1,10,10)都符合
// n{X} 匹配包含 X 個 n 的序列的字符串。
console.log(/\d{4}/.exec("100, 1000 or 10000?"));
// 結果:["1000", index: 5, input: "100, 1000 or 10000?"] //查找四個數字,有兩個匹配1000和10000里的1000
// n{X,Y} 匹配包含 X 或 Y 個 n 的序列的字符串。
console.log(/\d{3,4}/.exec("100, 1000 or 10000?"));
// 結果:["100", index: 0, input: "100, 1000 or 10000?"] //查找三個數字或四個數字,有三個匹配100,1000和10000里的1000
// n{X,} 匹配包含至少 X 個 n 的序列的字符串。
console.log(/\d{3,}/.exec("10, 100, 1000 or 10000?"));
// 結果:["100", index: 4, input: "10, 100, 1000 or 10000?"] //查找三個數字或三個以上個數字,有三個匹配100,1000和10000里的1000
// n$ 匹配任何結尾為 n 的字符串。
console.log(/d!$/.exec("Hello World!"));
// 結果:["d!", index: 10, input: "Hello World!"]
// ^n 匹配任何開頭為 n 的字符串。
console.log(/^He/.exec("Hello World!"));
// 結果:["He", index: 0, input: "Hello World!"]
// ?=n 匹配任何其后緊接指定字符串 n 的字符串。
console.log(/llo(?= Wor)/.exec("Hello World!"));
// 結果:["llo", index: 2, input: "Hello World!"]
// ?!n 匹配任何其后沒有緊接指定字符串 n 的字符串。
console.log(/llo(!= Wor)/.exec("Hello World!"));
// 結果:null
// RegExp 對象方法
// exec 檢索字符串中指定的值。返回找到的值,并確定其位置。
console.log(/[1-9]/.exec("a1b2"));
// 結果:["1", index: 1, input: "a1b2"]
// test 檢索字符串中指定的值。返回 true 或 false。
console.log(/[1-9]/.test("a1b2"));
// 結果:true
// 支持正則表達式的 String 對象的方法
// search 檢索與正則表達式相匹配的值。
console.log("Hello World!".search(/d!$/));
// 結果:10
// match 找到一個或多個正則表達式的匹配。
console.log("Hello World!".match(/d!$/));
// 結果:["d!", index: 10, input: "Hello World!"]
// replace 替換與正則表達式匹配的子串。
console.log("Hello World!".replace(/d!$/, "kkk"));
// split 把字符串分割為字符串數組。
console.log("Hello World! Football!".split(/o+/));
// 結果:["Hell", " W", "rld! F", "tball!"]
})
JavaScript RegExp 對象
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內容
- 語法: 模式描述了一個表達式模型。 修飾符(modifiers)描述了檢索是否是全局,區(qū)分大小寫等。注意:當使用構...
- RegExp 對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。 直接量語法:/pattern/attrib...
- RegEx 對象 RegExp 對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。 直接量語法 /patte...
- RegExp 對象用于規(guī)定在文本中檢索的內容。 什么是 RegExp? RegExp 是正則表達式的縮寫。當您檢索...