Мне нужно сопоставить браузеры Safari, но не браузер Chrome, использующий одно Regex. Обычно у меня нет проблем с регулярным выражением, но негативные ожидания опережают меня здесь.Regex Negative Lookahead для Chrome & Safari
/(?!chrome)(safari)/i.test("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5");
не могу понять, почему это возвращается true
.
Вы соответствуете подстроке 'safari', которая не равна' chrome'. (Не очень важно, если я это правильно понимаю.) – pimvdb
Хм, я, вероятно, неправильно истолковал использование. Я пытаюсь выполнить сафари по совпадению строк, но только если строка не соответствует хром. – dtbarne
[Отрицательный взгляд:] (http://www.regular-expressions.info/lookaround.html) 'q (?! U)' соответствует 'q', который не является *, а затем' u'. Это не поможет. Вам действительно нужен отрицательный lookbehind для этого задания (строка содержит 'Safari', которой не предшествует' Chrome'), но JS не поддерживает отрицательный lookbehind. –