技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

一例看懂 * + ? 符號(hào)正則匹配內(nèi)容的不同

作者:admin    時(shí)間:2024-5-6 17:18:13    瀏覽:

在書(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>

demodownload

輸出

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>

demodownload

輸出

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>

demodownload

輸出

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>

demodownload

輸出

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>

demodownload

輸出

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í)例

總結(jié):asp.net分割字符串的幾種方法

java中用正則表達(dá)式判斷字符串是否數(shù)字

標(biāo)簽: 正則表達(dá)式  
x
  • 站長(zhǎng)推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */