1. 程式人生 > >正則表達式中的方法

正則表達式中的方法

tee fun result 換行 lastindex a-z 換行符 不同 替換

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>正則表達式</title>
</head>
<body>
<h1>正則表達式的重復字符語法</h1>
<pre>
字符 含義
{n,m} 匹配前一項至少n次,但不能超過m次
{n,} 匹配前一項n次或者更多次
{n} 匹配前一項n次
? 匹配前一項0次或者1次,也就是說前一項是可選的,等價於{0,1}
+ 匹配前一項1次或者多次,等價於{1,}
* 匹配前一項0次或者多次,等價於{0,}
^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭。
$ 匹配字符串的結尾,在多行檢索中,匹配一行的結尾。
. 除換行符和 其他Unicode行終止符之外的任意字符。

字符 匹配
[...] 方括號內的任意字符
[^...] 不在方括號內的任意字符
\w 任何ASCII字符組成的單詞,等價於[a-zA-Z0-9]
\W 任何不是ASCII字符組成的單詞,等價於[^a-zA-Z0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符的字符,註意\w和\S不同
\d 等價於[0-9]
\D 等價於[^0-9]
</pre>
<h1>正則表達式的修飾符</h1>
<pre>
字符 含義
i 執行不區分大小寫的匹配
g 執行一個全局匹配,簡言之,即找到所有的匹配,而不是在找到第一個後就停止
m 多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結束和字符串的結束
</pre>
<p>string支持4種使用正則表達式的方法</p>

<p>1.search()參數不是正則表達式,則會先通過RegExp構造函數將它轉換成正則表達式,search()方法不支持全局檢索,因為它忽略正則表達式中的修飾符g。</br>
console.log(‘JavaScript‘.search(/script/i));//4</br></p>
<p>2.replace()方法以執行檢索與替換操作。其中第一個參數是一個正則表達式,第二個參數時要進行替換的字符串。如果第一個參數不是正則表達式而是字符串,則replace()將直接搜索這個字符串,而不是像search()一樣首先通過RegExp構造函數將它轉換成正則表達式。最值得註意的是,replace()方法的第二個參數可以使函數,該函數能夠動態的計算替換字符串。</p>
<p>3.match()方法是最常用的string正則表達式方法。它的唯一參數就是一個正則表達式(或通過RegExp構造函數將它轉換成正則表達式),返回的是一個由匹配結果組成的數組。如果該正則表達式設置了修飾符g,則該方法返回的數組包含字符串中的所有匹配結果。<u>如果這個正則表達式沒有設置修飾符g,match()就不會進行全局搜索,它也返回一個數組。在這種情況下,數組的第一個元素就是匹配的字符串,余下的元素則是正則表達式中用圓括號括起來的子表達式。因此,如果match()返回一個數組a,那麽a[0]存放的是完整的匹配,a[1]存放的則是與第一個用圓括號括起來的表達式相匹配的子串,以此類推。</u></p>
<h1>RegExp的方法</h1>
<p>Regexp對象定義了兩個用於執行模式匹配操作的方法,參數時一個字符串,而String方法的參數是一個RegExp對象。exec()和test()</p>

<script>
// search()
console.log(‘JavaScript‘.search(/script/i));//4
console.log(‘JavaScript‘.search(/ggg/i));//-1
// replace()
var text = ‘JavaScripthhjavascriptee‘;
var text1=text.replace(/JavaScript/ig,‘m‘);
console.log(text);//JavaScripthhjavascriptee
console.log(text1);//mhhmee
var text2 = text.replace(‘javascript‘,‘mmm‘);
console.log(text2);//JavaScripthhmmmee
// match()
console.log(‘1psjkhg3;sl3kd2‘.match(/\d/g));//["1", "3", "3", "2"]
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var text = "Visit my blog at http://www.example.com/~david";
var result = text.match(url);
console.log(result);//["http://www.example.com/~david", "http", "www.example.com", "~david", index: 17, input: "Visit my blog at http://www.example.com/~david"]
if(result != null){
var fullurl = result[0];//http://www.example.com/~david
var protocol = result[1];//http
var host = result[2];//www.example.com
var path = result[3];//~david
}
//exec()
var pattern = /Java/g;
var text = "JavaScript is more fun than Java!";
var result;

while((result = pattern.exec(text)) != null){
console.log(result);
console.log("Matched ‘"+result[0]+"‘"+"at position"+result.index+";next search begins at"+pattern.lastIndex);
}

//test()
console.log(pattern.test(‘javascript‘));//false
console.log(pattern.test(‘JavaScript‘));//true

</script>
</body>
</html>

正則表達式中的方法