Javascript Regex проверяет, содержит ли URL одно слово И НЕ содержит другое - PullRequest
1 голос
/ 01 сентября 2011

Как можно проверить URL-адрес, если он содержит определенное слово, а также проверить, не содержит ли оно слово?Лучше, если я попытаюсь показать пример:

Сделайте что-нибудь, если в URL есть слово « pan », однако НЕ делайте ничего, когда слово « panini * 1006»* 'находится в URL:

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

Вышеприведенная первая часть работает нормально, но с добавлением второй части панини она, конечно, не будет работать, у кого-нибудь есть идеи?

Ответы [ 5 ]

6 голосов
/ 01 сентября 2011

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"
0 голосов
/ 02 сентября 2011

Вы также можете использовать негативную перспективу, которую JS поддерживает во всех основных браузерах.

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

Регулярное выражение /pan(?!ini)/ соответствует любой "кастрюле", за которой не следует "ini".

0 голосов
/ 02 сентября 2011
var myurl = self.location.href;
if (myurl.indexOf("pan") != -1) && (myurl.indexOf("panini") == -1)
{
   //do something
}
0 голосов
/ 02 сентября 2011

Вы можете использовать свойство indexOf следующим образом:

url = window.location.href;
if ((url.indexOf("pan") >= 0) && (url.indexOf("panini") < 0)
0 голосов
/ 02 сентября 2011

JavaScript indexOf может решить вашу проблему.

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