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

贊助商

分類目錄

贊助商

最新文章

搜索

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

作者:admin    時間:2024-5-6 17:18:13    瀏覽:

在書寫正則表達(dá)式時,* + ? 符號非常常見,但是它們又比較容易混淆。本文將用一個例子,讓你看懂它們正則匹配內(nèi)容的不同。

在舉例之前,我們看看這幾個符號的解釋。

字符 描述
* 匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價于{0,}。
+ 匹配前面的子表達(dá)式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。
? 匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價于 {0,1}。

下面通過示例詳細(xì)介紹。

* 符號的匹配內(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 表示全局匹配,否則只匹配第一個*/
    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

+ 符號的匹配內(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

? 符號的匹配內(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)容,請看下面的解釋。

筆記

當(dāng)?字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。

總結(jié)

本文通過幾個簡單的示例,解釋了 * + ? 符號正則匹配內(nèi)容的不同,希望本教程對你有所幫助。

相關(guān)文章

您可能對以下文章也感興趣

asp.net正則表達(dá)式提取網(wǎng)頁網(wǎng)址、標(biāo)題、圖片實(shí)例以及過濾所有HTML標(biāo)簽實(shí)例

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

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

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