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】:javascript 的 indexOf
可能会解决您的问题。
var h=location.href;
if (h.indexOf("pan")>-1 && h.indexOf("panini")==-1) // do stuff
【讨论】:
以上是关于Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词的主要内容,如果未能解决你的问题,请参考以下文章
Javascript Regex 摆脱 URL 的最后一部分 - 在最后一个斜杠之后