一例看懂 * + ? 符号正则匹配内容的不同
作者: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>
输出
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>
输出
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>
输出
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>
输出
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>
输出
z
z
z
z
理解 +?
与 *?
组合字符的匹配内容,请看下面的解释。
笔记
当?
字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
总结
本文通过几个简单的示例,解释了 * + ? 符号正则匹配内容的不同,希望本教程对你有所帮助。
相关文章
您可能对以下文章也感兴趣
标签: 正则表达式
相关文章
x
- 站长推荐