Регулярное выражение URL не работает в JavaScript - PullRequest
10 голосов
/ 03 августа 2011

Я пытаюсь использовать регулярное выражение URL Джона Грубера в Javascript, но NetBeans постоянно говорит мне, что есть синтаксическая ошибка и недопустимые ошибки:

 var patt = "/(?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`!()\[\]{};:
'".,<>?«»“”‘’]))/";

Кто-нибудь знает, как решить эту проблему?

Ответы [ 3 ]

19 голосов
/ 03 августа 2011

Как уже говорили другие, это двойная кавычка. Но, в качестве альтернативы, вы можете просто написать регулярное выражение в виде литерала в javascript (но вместо этого вам нужно избегать косой черты в строках 1 и 3).

var regexp = /\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`!()\[\]{};:'".,<>?«»“”‘’]))/i;

Я также переместил модификатор без учета регистра в конец. Просто так. (редактировать: ну, не только потому что - см. комментарий Алана Мура ниже)

Примечание. Независимо от того, используете ли вы литерал или строку, должно быть в 1 строке.

0 голосов
/ 02 декабря 2015

Вы должны написать это в NetBeans:

      "(?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`!()\\[\\]{};:'\".,<>?«»“”‘’]))";
0 голосов
/ 03 августа 2011

поместите все выражение в одну строку и удалите кавычки в начале и в конце, чтобы оно выглядело так: var patt = /the-long-patttern/;, netbeans все равно будет жаловаться, а браузеры - нет, и это важно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...