javascript - 正则表达式检查它是否是 url 的根目录, "", "/", "/index.php"

标签 javascript regex

如果我通过 window.location.href 获取 javascript 中的 url,如何根据刚刚获取的 url 字符串检查我是否位于根目录之外的其他位置。使用正则表达式。

如果 url 字符串是“https://stackoverflow.com ”并且我按该字符串分割(协议(protocol)+域+tld),我希望正则表达式匹配:

  • 没什么,“”
  • 空格“/\s+”
  • 正斜杠“/”
  • Index.php“/index.php”

但不是“/questions”、“/questions/ask”或index.php或网站根目录以外的目录中的任何文件,例如“questions/ask/index.php”

最佳答案

此正则表达式将满足您的要求。

^(|\/(?:index\.php)?|\s+)$

^$ 是需要完整字符串匹配的 anchor 。 (^ 开头,$ 结尾)
() 是分组
| 分隔有效的可能匹配。 ?: 是非捕获组(实际上两个组都可以是非捕获组)。
我们通过使用 index.php optional 简化了更改(尾随的 ? 使该组成为可选)。
\s+ 至少有一个空格。
且前导 | 不允许出现任何内容。

也可以写成:

^(?:|\/|\/index\.php|\s+|)$

函数式 JS 用法:

var url = '',
    regex = /^(?:|\/|\/index\.php|\s+|)$/;
if(url.match(regex)) {
    console.log('TRUE');
} else{
    console.log('FALSE');
}

演示:https://jsfiddle.net/Lksghj4h/

关于javascript - 正则表达式检查它是否是 url 的根目录, "", "/", "/index.php",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428874/

相关文章:

javascript - 运行项目时的 Bootstrap/JQuery 问题

javascript - 将数据标签添加到直方图所需的帮助 - d3

javascript - const [a, b, c] = array; 和有什么区别const {a, b, c} = 数组;

正则表达式允许带有前导特殊字符的数字

javascript - 被拒绝的 HTTP promise 不会命中捕获 block

javascript - 调用异步函数但同步返回结果

regex - 在 Perl 中如何转义一些反斜杠但不是全部?

regex - 使用 sed 转义单引号和双引号。 geed, 查找, xargs

regex - 创建条件 bash 脚本代码

javascript - 从javascript中的字符串过滤版本号?