正则表达式检查它是否为url的根目录,“”,“/”,“/ index.php”

时间:2017-09-26 14:15:29

标签: javascript regex

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

如果url字符串是“https://stackoverflow.com”并且我正在分裂(protocol + domain + tld),我希望正则表达式匹配:

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

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

1 个答案:

答案 0 :(得分:2)

此正则表达式符合您的要求。

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

^$是需要完整字符串匹配的锚点。 (^领先,$即将结束)
()是分组,|分隔有效的可能匹配。 ?:是非捕获组(实际上两个组都可以是非捕获组)。
我们使用index.php可选项来简化更改(尾随?使该组可选)。
\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/