Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词

Posted

技术标签:

【中文标题】Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词【英文标题】:Javascript Regex check if URL contains one word AND does NOT contain anotherJavascript Regex 检查 URL 是否包含一个单词并且不包含另一个单词 【发布时间】:2011-11-08 16:45:53 【问题描述】:

如何检查一个 url 是否包含一个特定的单词,同时检查它是否不包含一个单词?如果我尝试显示一个示例会更好:

如果 'pan' 出现在 URL 中,则执行某些操作,但是当 'panini' 出现在 URL 中时,请不要执行任何操作:

if (/pan/.test(self.location.href) && (/panini/.test(self.location.href) == null)  ...

上面的第一部分工作正常,但是加上第二个帕尼尼部分当然不行,有人有什么想法吗?

【问题讨论】:

谢谢我饿了寻找帕尼尼 我看不出你引用的代码不会像你描述的那样做。请举一个例子,它做了一些与你想要的不同的事情。 因为它返回false,而不是null 【参考方案1】:
var myurl = self.location.href;
if (myurl.indexOf("pan") != -1) && (myurl.indexOf("panini") == -1)

   //do something

【讨论】:

【参考方案2】:

您也可以使用负前瞻,JS 在所有主流浏览器中都支持。

if ((/pan(?!ini)/).test(myurl)) 

/pan(?!ini)/ 正则表达式匹配任何没有后跟“ini”的“pan”。

【讨论】:

【参考方案3】:

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"

【讨论】:

该死的,你的抽奖速度更快! :) @ToddN 你能再试一次吗?我错过了) 啊谢谢!那么通过添加一个感叹号!它基本上不会拉出带有单词panini的if语句? 这已经过测试并且适用于我不想要的多个单词,谢谢!【参考方案4】:

您可以按如下方式使用indexOf 属性:

url = window.location.href;
if ((url.indexOf("pan") >= 0) && (url.indexOf("panini") < 0)

【讨论】:

【参考方案5】:

javascriptindexOf 可能会解决您的问题。

var h=location.href;
if (h.indexOf("pan")>-1 && h.indexOf("panini")==-1) // do stuff

【讨论】:

以上是关于Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词的主要内容,如果未能解决你的问题,请参考以下文章

javascript url #regex

javascript url #regex

Javascript Regex 摆脱 URL 的最后一部分 - 在最后一个斜杠之后

检查链接是不是为图像

URL Validation REGEX - URL 只对 http:// 有效

Javascript:检查 url 是真实文件还是符号链接