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

问题描述:

如果我通过window.location.href获取javascript中的url,我该如何检查我是否位于根目录以外的其他位置基于我刚刚得到的url字符串。用正则表达式。正则表达式来检查它是否是URL的根目录,“”,“/”,“/index.php”

如果URL字符串为 “https://*.com”,我通过我分裂(协议+域名+ TLD),我想正则表达式匹配:

  • 没有 “”
  • 空白“/ \ S +”
  • 正斜杠 “/”
  • 的index.php “的index.php”

而不是 “/问题”, “/问题/卖出” 或的index.php或任何文件在一个目录以外的网站的根目录,如“questions/ask/index.php”

+0

@ chris85因为我根据网址做客户端上的东西。该网站建立在一个PHP框架,因此index.php,但我所做的需要发生在客户端在js – wordSmith

这个正则表达式将符合您的要求。

^(|\/(?: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/

+0

嗯,这是完全有道理的,但是当我在这个网站(Regexr.com)尝试它和我的代码在'.indexOf()'内,它不匹配?与您发布的链接不同。下面是确切的一行:'url_arr.indexOf(/ ^(| \ /(?: index \ .php)?| \ s + |)$/g)> - 1'。当url_arr为[“”,“/”]时,它的计算结果为false – wordSmith

+0

我不是一个JS'r,但它不应该是'match',https://developer.mozilla.org/en-US /文档/网络/的JavaScript /参考/ Global_Objects /字符串/匹配?演示:https://jsfiddle.net/Lksghj4h/ – chris85

+0

它可以是,正则表达式应该在.replace()和.indexOf()中工作。无论如何,感谢您的帮助! – wordSmith