技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

一例看懂 * + ? 符号正则匹配内容的不同

作者:admin    时间:2024-5-6 17:18:13    浏览:

在书写正则表达式时,* + ? 符号非常常见,但是它们又比较容易混淆。本文将用一个例子,让你看懂它们正则匹配内容的不同。

在举例之前,我们看看这几个符号的解释。

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

下面通过示例详细介绍。

* 符号的匹配内容

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

+ 符号的匹配内容 

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

? 符号的匹配内容

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

+? 组合字符的匹配内容

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

*? 组合字符的匹配内容

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}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。

总结

本文通过几个简单的示例,解释了 * + ? 符号正则匹配内容的不同,希望本教程对你有所帮助。

相关文章

您可能对以下文章也感兴趣

asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例

总结:asp.net分割字符串的几种方法

java中用正则表达式判断字符串是否数字

标签: 正则表达式  
x
  • 站长推荐
/* 左侧显示文章内容目录 */