正则表达式中?的理解

2018-11-12  本文已影响3人  抽象的海宁

我在菜鸟教程中,执行下面的程序

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>菜鸟教程(runoob.com)</title>

</head>

<body>

<script>

var str = "http://www.runoob.com:80/html/html-tutorial.html";

var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;

arr = str.match(patt1);

for (var i = 0; i < arr.length ; i++) {

    document.write(arr[i]);

document.write("<br>");

}

</script>

</body>

</html>

问题,如果没有端口

var str = "http://www.runoob.com/html/html-tutorial.html

var patt1 = /(\w+):\/\/([^/:]+)(:\d*)([^# ]*)/;

如果是这样,那么就不能匹配到东西,那么就会出错。

通过修改var str = "http://www.runoob.com:80/html/html-tutorial.html";中的:80,明白了?的作用,?的作用是匹配一次或多次,一般在我们的网址中,有时会指定端口,有时默认是80端口,那么在匹配的时候,如果不指定?的话,那么如果遇到没有指定端口的情况就会有问题。

上一篇 下一篇

猜你喜欢

热点阅读