Я использую JavaScript JavaScript QuickBlox. Просматривая их код, я нашел эту строку:Javascript string variable unquoted?
var URL_REGEXP = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi;
Вероятно, он объявил переменную строку, которая является регулярным выражением. Затем он использует эту переменную таким образом:
return str.replace(URL_REGEXP, function(match) {
url = (/^[a-z]+:/i).test(match) ? match : 'http://' + match;
url_text = match;
return '<a href="' + escapeHTML(url) + '" target="_blank">' + escapeHTML(url_text) + '</a>';
});
Мне интересно, как это возможно? Var, объявленный в первой строке, должен быть строкой, но он не определен. Разве это не синтаксическая ошибка?
Я пошел и протестировал этот код в своем браузере, и он работает! Это означает, что у меня есть кое-что, чтобы учиться здесь ... Может ли кто-нибудь объяснить, как объявляется эта переменная?
Кроме того, я попытался запустить тот же код на моем компьютере друзей, отладчик Chrome выдает синтаксическую ошибку в строке объявления переменных (неожиданный токен '/'). Я использую Chrome Version 36.0.1985.143 m, мой друг использует то же самое, но на моем компьютере все работает отлично, на моем компьютере друзей код останавливается при первом объявлении переменной из-за «синтаксической ошибки».
Есть ли какая-то настройка, которая отличается?
Любая помощь будет оценена по достоинству.
UPDATE
Спасибо за быстрые ответы. Я пришел из PHP-фона, поэтому подумал, что все регулярные выражения должны быть инициализированы как строки: P.
Любой может воспроизвести ошибку синтаксиса, которую я получаю на компьютере моих друзей? (Это происходит после отключения всех расширений). Я тоже не могу воспроизвести, и это меня расстраивает.
UPDATE 2
Я проверил и мои друзья компьютер и посмотрел через источник. По-видимому, это связано с некоторыми проблемами кодирования (я не уверен, что). Регулярное выражение показано, как это:
var URL_REGEXP = /\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?芦禄鈥溾€濃€樷€橾))/gi;
(Символы в конце кода некоторые случайные китайские символы, кажется).
Как изменить кодировку в соответствии с его браузером/системой? (Он работает на китайской упрощенной системе Windows 7).
Регулярные выражения не являются строками. – Barmar
Я также не могу воспроизвести синтаксическую ошибку. Вы, должно быть, допустили ошибку при копировании на компьютер своего друга. – Barmar
Хм .. Я загрузил его на веб-сервер, он доступен через URL-адрес, который вы вводите в свой браузер, поэтому файлы должны быть точно такими же, не так ли? – l3utterfly