|
|
|
|
|
在書(shū)寫(xiě)正則表達(dá)式時(shí),*
+
?
符號(hào)非常常見(jiàn),但是它們又比較容易混淆。本文將用一個(gè)例子,讓你看懂它們正則匹配內(nèi)容的不同。
在舉例之前,我們看看這幾個(gè)符號(hào)的解釋。
字符 | 描述 |
---|---|
* | 匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價(jià)于{0,}。 |
+ | 匹配前面的子表達(dá)式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價(jià)于 {1,}。 |
? | 匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價(jià)于 {0,1}。 |
下面通過(guò)示例詳細(xì)介紹。
* 符號(hào)的匹配內(nèi)容
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
var str = "zo,z,zoo,zooo,oooo";
var re = /zo*/g; /* 加上 g 表示全局匹配,否則只匹配第一個(gè)*/
var arrMactches = str.match(re)
for (var i=0;i < arrMactches.length ; i++)
{
document.write(arrMactches[i] + "<br>");
}
</script>
</body>
</html>
輸出
zo
z
zoo
zooo
+ 符號(hào)的匹配內(nèi)容
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
var str = "zo,z,zoo,zooo,oooo";
var re = /zo+/g;
var arrMactches = str.match(re)
for (var i=0;i < arrMactches.length ; i++)
{
document.write(arrMactches[i] + "<br>");
}
</script>
</body>
</html>
輸出
zo
zoo
zooo
? 符號(hào)的匹配內(nèi)容
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
var str = "zo,z,zoo,zooo,oooo";
var re = /zo?/g;
var arrMactches = str.match(re)
for (var i=0;i < arrMactches.length ; i++)
{
document.write(arrMactches[i] + "<br>");
}
</script>
</body>
</html>
輸出
zo
z
zo
zo
+? 組合字符的匹配內(nèi)容
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
var str = "zo,z,zoo,zooo,oooo";
var re = /zo+?/g;
var arrMactches = str.match(re)
for (var i=0;i < arrMactches.length ; i++)
{
document.write(arrMactches[i] + "<br>");
}
</script>
</body>
</html>
輸出
zo
zo
zo
*? 組合字符的匹配內(nèi)容
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script>
var str = "zo,z,zoo,zooo,oooo";
var re = /zo*?/g;
var arrMactches = str.match(re)
for (var i=0;i < arrMactches.length ; i++)
{
document.write(arrMactches[i] + "<br>");
}
</script>
</body>
</html>
輸出
z
z
z
z
理解 +?
與 *?
組合字符的匹配內(nèi)容,請(qǐng)看下面的解釋。
筆記
當(dāng)?
字符緊跟在任何一個(gè)其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對(duì)于字符串 "oooo",'o+?' 將匹配單個(gè) "o",而 'o+' 將匹配所有 'o'。
總結(jié)
本文通過(guò)幾個(gè)簡(jiǎn)單的示例,解釋了 * + ? 符號(hào)正則匹配內(nèi)容的不同,希望本教程對(duì)你有所幫助。
相關(guān)文章
您可能對(duì)以下文章也感興趣
asp.net正則表達(dá)式提取網(wǎng)頁(yè)網(wǎng)址、標(biāo)題、圖片實(shí)例以及過(guò)濾所有HTML標(biāo)簽實(shí)例