Javascript正则表达式检查URL是否包含一个单词并且不包含另一个单词
问题描述:
如何检查一个URL是否包含特定单词,还检查它是否不包含单词?它的更好,如果我尝试并显示一个例子:Javascript正则表达式检查URL是否包含一个单词并且不包含另一个单词
做的东西,如果这个词“泛”是在URL中,但是没有做任何事情,当这个词“帕尼尼”是在URL:
if (/pan/.test(self.location.href) && (/panini/.test(self.location.href) == null) {...}
以上第一部分工作正常,但与第二个帕尼尼部分添加它当然不会工作,任何人有任何想法?
答
test
返回一个布尔值,因此就使用!
操作:
if (/pan/.test(self.location.href) && !(/panini/.test(self.location.href)) {...}
这可以简化使用indexOf
(应该会更快):
if (self.location.href.indexOf("pan") > -1 && self.location.href.indexOf("panini") == -1)
{...}
此外,对于一个正则表达式测试字可以使用字边界,\b
:
/\bpan\b/.test(self.location.href)
//Will match "pan", "pan and food", but not "panini"
答
JavaScript的indexOf
可能会解决您的问题。
var h=location.href;
if (h.indexOf("pan")>-1 && h.indexOf("panini")==-1) // do stuff
答
可以按如下方式使用indexOf
属性:
url = window.location.href;
if ((url.indexOf("pan") >= 0) && (url.indexOf("panini") < 0)
答
var myurl = self.location.href;
if (myurl.indexOf("pan") != -1) && (myurl.indexOf("panini") == -1)
{
//do something
}
答
您也可以使用负前瞻,其中JS在所有主要浏览器支持。
if ((/pan(?!ini)/).test(myurl)) {
/pan(?!ini)/
正则表达式匹配没有后跟“ini”的任何“pan”。
现在感谢我饿了*寻找帕尼尼* – Loktar
我不明白你引用的代码不会做你所描述的。请举一个例子,说明它做了什么不同于你想要的。 –
因为它返回false,而不是null – CashIsClay