正则表达式来检查它是否是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”
这个正则表达式将符合您的要求。
^(|\/(?: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');
}
嗯,这是完全有道理的,但是当我在这个网站(Regexr.com)尝试它和我的代码在'.indexOf()'内,它不匹配?与您发布的链接不同。下面是确切的一行:'url_arr.indexOf(/ ^(| \ /(?: index \ .php)?| \ s + |)$/g)> - 1'。当url_arr为[“”,“/”]时,它的计算结果为false – wordSmith
我不是一个JS'r,但它不应该是'match',https://developer.mozilla.org/en-US /文档/网络/的JavaScript /参考/ Global_Objects /字符串/匹配?演示:https://jsfiddle.net/Lksghj4h/ – chris85
它可以是,正则表达式应该在.replace()和.indexOf()中工作。无论如何,感谢您的帮助! – wordSmith
@ chris85因为我根据网址做客户端上的东西。该网站建立在一个PHP框架,因此index.php,但我所做的需要发生在客户端在js – wordSmith