require(['jquery'], function($) {
// RegExp 對象
// RegExp 對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。
// 直接量語法
// /pattern/attributes
// 創(chuàng)建 RegExp 對象的語法:
var pattern = "[abc]";
var attributes = "g";
var myReg = new RegExp(pattern, attributes);
// 參數(shù) pattern 是一個字符串,指定了正則表達式的模式或其他正則表達式。
// 參數(shù) attributes 是一個可選的字符串,包含屬性 "g"、"i" 和 "m",分別用于指定全局匹配、區(qū)分大小寫的匹配和多行匹配。
// 返回值
// 一個新的 RegExp 對象,具有指定的模式和標(biāo)志。如果參數(shù) pattern 是正則表達式而不是字符串,那么 RegExp() 構(gòu)造函數(shù)將用與指定的 RegExp 相同的模式和標(biāo)志創(chuàng)建一個新的 RegExp 對象。
// 如果不用 new 運算符,而將 RegExp() 作為函數(shù)調(diào)用,那么它的行為與用 new 運算符調(diào)用時一樣,只是當(dāng) pattern 是正則表達式時,它只返回 pattern,而不再創(chuàng)建一個新的 RegExp 對象。
// 方括號用于查找某個范圍內(nèi)的字符:
// [abc] 查找方括號之間的任何字符。
console.log(/[abc]/.test("abc"));
// 結(jié)果:true
console.log(/[abc]/.test("defg"));
// 結(jié)果:false
// [^abc] 查找任何不在方括號之間的字符。
console.log(/[^abc]/.test("abc"));
// 結(jié)果:false
console.log(/[^abc]/.test("defg"));
// 結(jié)果:true
// [0-9] 查找任何從 0 至 9 的數(shù)字。
console.log(/[0-9]/.test("a1b2c3"));
// 結(jié)果:true
console.log(/[0-9]/.test("abc"));
// 結(jié)果:false
// [a-z] 查找任何從小寫 a 到小寫 z 的字符。
// [A-Z] 查找任何從大寫 A 到大寫 Z 的字符。
// [A-z] 查找任何從大寫 A 到小寫 z 的字符。
console.log(/[a-z]/.test("abc"));
// 結(jié)果:true
console.log(/[A-Z]/.test("abc"));
// 結(jié)果:false
console.log(/[A-z]/.test("abc"));
// 結(jié)果:true
// (red|blue|green) 查找任何指定的選項。
var reg1 = new RegExp("blue|abl1");
console.log(reg1.test("ablue"));
// 結(jié)果:true
console.log(reg1.test("abl1ue"));
// 結(jié)果:true
// 元字符(Metacharacter)是擁有特殊含義的字符:
// . 查找單個字符,除了換行和行結(jié)束符。
var reg2 = new RegExp("h.t");
console.log(reg2.test("That's hot!"));
// 結(jié)果:true (hat,hot都是)
console.log(reg2.exec("That's hot!"));
// 結(jié)果:["hat", index: 1, input: "That's hot!"] 查找第一個匹配,如果使用g屬性,就會指向最后一個匹配的["hot", index: 7, input: "That's hot!"]
// \w 查找單詞字符。
console.log(/\w/.exec("Give 100%!"));
// 結(jié)果:["G", index: 0, input: "Give 100%!"]
// \W 查找非單詞字符。
console.log(/\W/.exec("Give 100%!"));
// 結(jié)果:[" ", index: 4, input: "Give 100%!"]
// \d 查找數(shù)字。
console.log(/\d/.exec("Give 100%!"));
// 結(jié)果:["1", index: 5, input: "Give 100%!"]
// \D 查找非數(shù)字字符。
console.log(/\D/.exec("Give 100%!"));
// 結(jié)果:["G", index: 0, input: "Give 100%!"]
// \s 查找空白字符。
console.log(/\s/.exec("Give 100%!"));
// 結(jié)果:[" ", index: 4, input: "Give 100%!"]
// \S 查找非空白字符。
console.log(/\S/.exec("Give 100%!"));
// 結(jié)果:["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"));
// 結(jié)果:["Wo", index: 6, input: "Hello World"]
console.log(/\bor/.exec("Hello World"));
// 結(jié)果:null
// \B 匹配非單詞邊界。匹配位置的上一個和下一個字符的類型是相同的:即必須同時是單詞,或必須同時是非單詞字符。字符串的開頭和結(jié)尾處被視為非單詞字符。
console.log(/\BWo/.exec("Hello World"));
// 結(jié)果:null
console.log(/\Bor/.exec("Hello World"));
// 結(jié)果:["or", index: 7, input: "Hello World"]l
// \n 查找換行符。
console.log(/\n/.exec("Hello World.\nLearn Javascript."));
// \f 查找換頁符。
// \r 查找回車符。
// \t 查找制表符。
// \v 查找垂直制表符。
// \xxx 查找以八進制數(shù) xxx 規(guī)定的字符。
// 八進制 127 (W)
console.log(/\127/.exec("Hello World.World is wonderful!"));
// 結(jié)果:["W", index: 6, input: "Hello World.World is wonderful!"]
// \xdd 查找以十六進制數(shù) dd 規(guī)定的字符。
// \uxxxx 查找以十六進制數(shù) xxxx 規(guī)定的 Unicode 字符
// 量詞
// n+ 匹配任何包含至少一個 n 的字符串。
console.log(/o+/.exec("Hello World.World is wonderful!"));
// 結(jié)果:["o", index: 4, input: "Hello World.World is wonderful!"]
// n* 匹配任何包含零個或多個 n 的字符串。
console.log(/Wo*/.exec("Hello World.World is wonderful!"));
// 對 "W" 進行全局搜索,包括其后緊跟的一個或多個 "o":
// 結(jié)果:["", index: 0, input: "Hello World.World is wonderful!"]
// n? 匹配任何包含零個或一個 n 的字符串。
console.log(/10?/.exec("1, 100 or 1000?"));
// 結(jié)果:["1", index: 0, input: "1, 100 or 1000?"] (1,10,10)都符合
// n{X} 匹配包含 X 個 n 的序列的字符串。
console.log(/\d{4}/.exec("100, 1000 or 10000?"));
// 結(jié)果:["1000", index: 5, input: "100, 1000 or 10000?"] //查找四個數(shù)字,有兩個匹配1000和10000里的1000
// n{X,Y} 匹配包含 X 或 Y 個 n 的序列的字符串。
console.log(/\d{3,4}/.exec("100, 1000 or 10000?"));
// 結(jié)果:["100", index: 0, input: "100, 1000 or 10000?"] //查找三個數(shù)字或四個數(shù)字,有三個匹配100,1000和10000里的1000
// n{X,} 匹配包含至少 X 個 n 的序列的字符串。
console.log(/\d{3,}/.exec("10, 100, 1000 or 10000?"));
// 結(jié)果:["100", index: 4, input: "10, 100, 1000 or 10000?"] //查找三個數(shù)字或三個以上個數(shù)字,有三個匹配100,1000和10000里的1000
// n$ 匹配任何結(jié)尾為 n 的字符串。
console.log(/d!$/.exec("Hello World!"));
// 結(jié)果:["d!", index: 10, input: "Hello World!"]
// ^n 匹配任何開頭為 n 的字符串。
console.log(/^He/.exec("Hello World!"));
// 結(jié)果:["He", index: 0, input: "Hello World!"]
// ?=n 匹配任何其后緊接指定字符串 n 的字符串。
console.log(/llo(?= Wor)/.exec("Hello World!"));
// 結(jié)果:["llo", index: 2, input: "Hello World!"]
// ?!n 匹配任何其后沒有緊接指定字符串 n 的字符串。
console.log(/llo(!= Wor)/.exec("Hello World!"));
// 結(jié)果:null
// RegExp 對象方法
// exec 檢索字符串中指定的值。返回找到的值,并確定其位置。
console.log(/[1-9]/.exec("a1b2"));
// 結(jié)果:["1", index: 1, input: "a1b2"]
// test 檢索字符串中指定的值。返回 true 或 false。
console.log(/[1-9]/.test("a1b2"));
// 結(jié)果:true
// 支持正則表達式的 String 對象的方法
// search 檢索與正則表達式相匹配的值。
console.log("Hello World!".search(/d!$/));
// 結(jié)果:10
// match 找到一個或多個正則表達式的匹配。
console.log("Hello World!".match(/d!$/));
// 結(jié)果:["d!", index: 10, input: "Hello World!"]
// replace 替換與正則表達式匹配的子串。
console.log("Hello World!".replace(/d!$/, "kkk"));
// split 把字符串分割為字符串?dāng)?shù)組。
console.log("Hello World! Football!".split(/o+/));
// 結(jié)果:["Hell", " W", "rld! F", "tball!"]
})
JavaScript RegExp 對象
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 語法: 模式描述了一個表達式模型。 修飾符(modifiers)描述了檢索是否是全局,區(qū)分大小寫等。注意:當(dāng)使用構(gòu)...
- RegExp 對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。 直接量語法:/pattern/attrib...
- 小練習(xí): \d \w \s [a-zA-Z0-9] \b . * + ? x{3} ^ $分別是什么? 寫一個函數(shù)...
- RegEx 對象 RegExp 對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。 直接量語法 /patte...
- RegExp 對象用于規(guī)定在文本中檢索的內(nèi)容。 什么是 RegExp? RegExp 是正則表達式的縮寫。當(dāng)您檢索...