<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<input type="text" id="result" value="">
<button onclick="show()">计算</button>
<script>
function fact(n) { // 计算n的阶乘
if (n === 0) {
return 1;
}
return n * fact(n-1);
}
function show() { // 计算3!+5!+7!并展示结果
var ans = fact(3) + fact(5) + fact(7);
document.getElementById("result").value = ans;
}
</script>
</body>
</html>
我们先从index.html中的路由跳转看,此处跳转的链接带着三个 / / /
<div id="app">
<h1>Hello App!</h1>
<p>
<!-- 重点。此处跳转的链接是三个 /// --->
<router-link to="///www.baidu.com">Go to Foo</router-link>
<router-link to="/bar">Go to Bar</router-link>
</p>
<router-view></router-view>
</div>
我们在js中将return注释,将结果 log一下,看看这个正则它干了啥
export function cleanPath (path: string): string {
const path1 = path.replace(/\/\//g, '/')
console.log(path1)
// return path.replace(/\/\//g, '/')
}
o,看到这我们就明白了,原先的三个 /// 斜线,被替换成成了两个 // ,而原先的 /bar 不会进行跳转,是因为只有一个 /。
那我们要干的事情就很明确了,将三个 /// 替换成一个 /
提交通过。
export function cleanPath (path: string): string {
const path1 = path.replace(/\/\//g, '/')
const path2 = path1.replace(/\/\//g, '/')
const path3 = path2.replace(/\/\//g, '/')
console.log(path1, path2, path3)
return path3
}
正确的写法应该是要通过正则 +号,进行贪心匹配
export function cleanPath (path: string): string {
return path.replace(/\/+/g, '/')
}