URL-адрес регулярного выражения не работает в javascript
Я пытаюсь использовать URL-адрес 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`!()\[\]{};:
'".,<>?«»""‘’]))/";
Кто-нибудь знает, как это решить?
Ответы
Ответ 1
Как говорили другие, это двойная цитата. Но, альтернативно, вы можете просто написать регулярное выражение как литерал в 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;
Я также переместил модификатор без учета регистра. Да просто так. (edit: Ну, не просто "потому что" - см. комментарий Алана Мура ниже)
Примечание. Если вы используете литерал или строку, он должен быть на 1 строке.
Ответ 2
поместите все выражение в одну строку и удалите кавычки в начале и в конце, чтобы оно выглядело следующим образом: var patt = /the-long-patttern/;
, netbeans все равно будет жаловаться, но браузеры не будут и что важно.
Ответ 3
Вы должны написать это в 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`!()\\[\\]{};:'\".,<>?«»""‘’]))";