我在菜鸟教程中,执行下面的程序
<!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端口,那么在匹配的时候,如果不指定?的话,那么如果遇到没有指定端口的情况就会有问题。
网友评论