前言RegExp:是正則表達(dá)式(regular expression)的簡寫。RegExp 對象用于規(guī)定在文本中檢索的內(nèi)容。 創(chuàng)建 RexExp 對象創(chuàng)建正則表達(dá)式有兩種方式: 第一種:使用字面量創(chuàng)建 RegExp 對象的語法: var p = /pattern/attributes; 第二種:使用 new 創(chuàng)建RegExp對象的語法: var p = new RegExp(pattern, attributes); 參數(shù)釋義: attributes參數(shù): 參數(shù) | 描述 |
---|
g | 指定全局匹配 | i | 執(zhí)行不區(qū)分大小寫的匹配。 | m | 多行匹配 |
RegExp對象屬性屬性 | 描述 |
---|
global | RegExp對象是否具有標(biāo)志g | ignoreCase | RegExp對象是否具有標(biāo)志i | multiline | RegExp對象是否具有標(biāo)志m | lastIndex | 標(biāo)識開始匹配下一次字符的位置,返回整數(shù) | source | 正則表達(dá)式源文本 |
使用示例 var p = /hello/gi; console.log(p.global); //true console.log(p.ignoreCase); //true console.log(p.multiline); //false console.log(p.lastIndex); //0 console.log(p.source); //hello
RegExp對象方法RegExp對象有3個(gè)方法:test()、exec()以及compile()。 方法 | 描述 |
---|
test() | 檢索字符串中的指定值,返回值是true或false | exec() | 檢索字符串中的指定值,返回存有匹配字符串的數(shù)組;如果沒有發(fā)現(xiàn)匹配,則返回null | compile() | 用于改變正則表達(dá)式,compile()既可以改變檢索模式,也可以添加或刪除第二個(gè)參數(shù) |
test()方法檢索字符串中的指定值,返回值是true或false var x = 'hello world!' var y = 'my name is yo yo' var p = /hello/; console.log(p.test(x)); //true console.log(p.test(y)); //false
exec()方法檢索字符串中的指定值,返回值是存有匹配字符串的數(shù)組;如果沒有發(fā)現(xiàn)匹配,則返回null。 var x = 'hello world!' var y = 'my name is yo yo' var p = /hello/; console.log(p.exec(x)); //['hello', index: 0, input: 'hello world!', groups: undefined] console.log(p.exec(y)); //null
compile()方法用于改變正則表達(dá)式,compile()既可以改變檢索模式,也可以添加或刪除第二個(gè)參數(shù) var x = 'hello world!' var p = /hello/; console.log(p.test(x)); // true // 改變p的匹配方式 p.compile('haha'); console.log(p.test(x)); // false
String對象的正則方法String對象可以支持的正則相關(guān)方法 方法 | 描述 |
---|
search | 檢索與正則表達(dá)式相匹配的值 | replace | 替換與正則表達(dá)式相匹配的值 | match | 找到一個(gè)或多個(gè)正則匹配 | split | 把字符串分割成數(shù)組 |
search() 方法search() 方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。如果沒有找到任何匹配的子串,則返回 -1。 如果找到,則返回與指定查找的字符串或者正則表達(dá)式相匹配的 String 對象起始位置。 使用語法 string.search(searchvalue)
searchvalue 參數(shù)是必須??梢允遣檎业淖址蛘哒齽t表達(dá)式。 使用示例 var x = 'hello world!' // 可以search 字符串 console.log(x.search('hello')); // 0 返回起始位置 // 也可以search RegExp 對象 console.log(x.search(/hello/)); // 0 返回起始位置 console.log(x.search(/world/)); // 6
replace() 方法replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。 語法 string.replace(searchvalue,newvalue)
參數(shù) | 描述 |
---|
searchvalue | 必須。規(guī)定子字符串或要替換的模式的 RegExp 對象。請注意,如果該值是一個(gè)字符串,則將它作為要檢索的直接量文本模式,而不是首先被轉(zhuǎn)換為 RegExp 對象。 | newvalue | 必需。一個(gè)字符串值。規(guī)定了替換文本或生成替換文本的函數(shù)。 |
使用示例 var x = 'hello world!'
console.log(x.replace(/hello/, "hei")) // hei world!
match() 方法match() 方法可在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配。 注意:match() 方法將檢索字符串 String Object,以找到一個(gè)或多個(gè)與 regexp 匹配的文本。 這個(gè)方法的行為在很大程度上有賴于 regexp 是否具有標(biāo)志 g。如果 regexp 沒有標(biāo)志 g,那么 match() 方法就只能在 stringObject 中執(zhí)行一次匹配。 如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個(gè)數(shù)組,其中存放了與它找到的匹配文本有關(guān)的信息。 語法 string.match(regexp)
參數(shù) regexp 必需。規(guī)定要匹配的模式的 RegExp 對象。如果該參數(shù)不是 RegExp 對象,則需要首先把它傳遞給 RegExp 構(gòu)造函數(shù),將其轉(zhuǎn)換為 RegExp 對象。 返回值:存放匹配結(jié)果的數(shù)組。該數(shù)組的內(nèi)容依賴于 regexp 是否具有全局標(biāo)志 g。如果沒找到匹配結(jié)果返回 null 。 使用示例: 不區(qū)分大小寫,查找字符串中的字符o,返回?cái)?shù)組 var x = 'hello world!' console.log(x.match(/o/i)) //['o', index: 4, input: 'hello world!', groups: undefined]
帶有全局標(biāo)志g時(shí) var x = 'hello world!' console.log(x.match(/o/gi)) // ['o', 'o'] console.log(x.match(/hello/gi)) // ['hello']
沒找到返回null var x = 'hello world!' console.log(x.match(/xx/gi)) // null
split() 方法split() 方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組。 語法 string.split(separator,limit)
參數(shù): 使用示例 var x = 'hello world!my name is yoyo' // 匹配空格或!表達(dá)式 /[' '|\!]/ console.log(x.split(/[' '|\!]/)) // ['hello', 'world', 'my', 'name', 'is', 'yoyo']
|