Как исправить ошибку «Неверную группу» при попытке использовать «Улучшенный» URL-URL «Улучшенный» URL-адрес REGEXP в JavaScript?

StackOverflow https://stackoverflow.com/questions/3559113

  •  01-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь интегрировать Джона Грубера Улучшенный либеральный, точный рисунок регулятора для сопоставления URL В одну из моих Javascripts, но инспектор WebKit (в Google Chrome 5.0.375.125 для Mac) дает «Неверную группу» Ошибка синтаксиса регулярных выражений.

Оригинал Gruber Regexp выглядит следующим образом:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

Линия из моего JavaScript W / Regexp выглядит следующим образом (с Wired Clashes Backslash - сбежал):

tweet_text = tweet_text.replace(/(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi, '<a href="$1">$1</a>');

И ошибка Google Chrome (V8?) Выглядит следующим образом:

Uncaught SyntaxError: Invalid regular expression: /(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/: Invalid group

И ошибка Safari выглядит следующим образом:

SyntaxError: Invalid regular expression: unrecognized character after (?

Он утверждает, что он должен работать в современном JavaScript Regexp переводчикам, которые я бы предположил WebKit & V8. Синтаксис Regexp JavaScript не поддерживает (?: (Черт, Google для не индексации пунктуации!) Группировка синтаксиса? Я просто скучал по поводу чего-то?

Это было полезно?

Решение

ГА, это было Модификатор режима (т.е. (?i)) В начале Regex!

я прошел сквозь ДАБОЛЬШИЧНИКОВЫЕ ДАТЧИИ РЕГУЛИРОВАННЫХ ПРЕДОГРИДЕНТАХ на «Регулярное выражение явления JavaScript», конкретно список того, что нет Поддерживается, и был «модификатор режима», который я уже указывал после закрытия форвардной косые регеек. Разорвал это все кажется хорошо.

Итак, мой JavaScript Regex теперь следующим образом:

/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top