Проверка JavaScript выходит с международными символами

Вершина в моем списке:

  1. Отряд Java Радио
  2. Разработки программного обеспечения Иногда я также слушаю: подкаст ASP.NET

я слежу за iTunes U, поскольку некоторые курсы имеют идеальную цену (лишенную) первосортных Университетов во всем мире. Например, Разработка языка программирования из MIT.

22
задан alex 12 April 2012 в 05:43
поделиться

6 ответов

Я думаю, что здесь могут быть полезны методы проверки адреса электронной почты и URL, например. метод электронной почты:

email: function(value, element) {
    return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
},

Сценарий для компиляции этого регулярного выражения .

Другими словами, замена произвольного списка символов «сумасшедшей луны» на это может помочь:

[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]

В основном это позволяет избежать проблем с кодировкой символов, которые вы иметь в другом месте, заменив символы кодирования потребностей более общими определениями. Хотя он не обязательно более удобочитаемый, пока он короче, чем ваш полный список.

36
ответ дан 29 November 2019 в 03:50
поделиться

Видя, как оператор работает в консоли, могло ли это быть связано с тем, как сохраняются ваши файлы .js (например, ascii или UTF-8), и что браузер загружает их таким образом и в процесс переводит символы?

2
ответ дан 29 November 2019 в 03:50
поделиться

Перечисленные международные символы являются частью расширенного ASCII. добавленные вами, конечно же, нет.

2
ответ дан 29 November 2019 в 03:50
поделиться

На самом деле это не ответ, но у меня еще нет 50 представителей, чтобы добавить комментарий ... Это определенно можно отнести к проблемам с кодировкой.

Да, "ECMA не следует" Меня не волнует кодировка ... "бла-бла, ну, если у вас firefox, перейдите в Вид> Кодировка символов> Западный (ISO-8859-1) , затем попробуйте использовать поле Имя.

Он отлично работает у меня после изменения кодировки вручную (если остальной части страницы не нравится переключатель кодировки: P)

(в IE8 вы можете перейти на страницу > Кодировка> Западноевропейская (Windows) , чтобы получить тот же эффект)

14
ответ дан 29 November 2019 в 03:50
поделиться

Какая кодировка символов в файле JS?

Для XML QNames я использую это RegExp:

/**
 * Definition of an XML Name
 */
var NameStartChar = "A-Za-z:_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D"+
                    "\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF"+
                    "\uF900-\uFDCF\uFDF0-\uFFFD\u010000-\u0EFFFF";
var NameChar = NameStartChar+"\\-\\.0-9\u00B7\u0300-\u036F\u203F-\u2040";
var Name = "^["+NameStartChar+"]["+NameChar+"]*$";
RegExp (Name).test (value);

Он работает как шарм также с интернационализированными символами. Обратите внимание на побег. Благодаря этому я могу ограничить JS-файл только символами ASCII . Поэтому у меня нет проблем при работе с кодировками ISO-8859 и UTF-8.

Это больше не верно, если вы используете кодировки символов, в которых ASCII не является реальным подмножеством (например, в Азии UTF-16 ).

Ура,

3
ответ дан 29 November 2019 в 03:50
поделиться

Используйте что-нибудь вроде Fiddler или Charles (не панель Firebug Net или что-нибудь еще, что на самом деле находится внутри браузера), чтобы проверить, что на самом деле происходит по сети. Это почти наверняка проблема с кодировкой: либо файл был сохранен в некотором наборе символов Microsoft и отправляется как UTF-8, либо, возможно, наоборот.

В случае JS RegExps вы можете, как указывает Болдевин , чтобы избежать этих проблем, укажите кодовую точку Unicode для символов, которые вам нужны, которые находятся за пределами диапазона US-ASCII. Тем не менее, было бы хорошо убедиться, что вы не путаете кодировки между местом, где файл сохраняется, и местом, где он обслуживается.

на самом деле идет по проводам. Это почти наверняка проблема с кодировкой: либо файл был сохранен в некотором наборе символов Microsoft и отправляется как UTF-8, либо, возможно, наоборот.

В случае JS RegExps вы можете, как указывает Болдевин , чтобы избежать этих проблем, укажите кодовую точку Unicode для символов, которые вам нужны, которые находятся за пределами диапазона US-ASCII. Тем не менее, было бы хорошо убедиться, что вы не путаете кодировки между местом, где файл сохраняется, и местом, где он обслуживается.

на самом деле идет по проводам. Это почти наверняка проблема с кодировкой: либо файл был сохранен в некотором наборе символов Microsoft и отправляется как UTF-8, либо, возможно, наоборот.

В случае JS RegExps вы можете, как указывает Болдевин , чтобы избежать этих проблем, укажите кодовую точку Unicode для символов, которые вам нужны, которые находятся за пределами диапазона US-ASCII. Тем не менее, было бы хорошо убедиться, что вы не путаете кодировки между местом, где файл сохраняется, и местом, где он обслуживается.

Чтобы избежать этих проблем, укажите кодовую точку Unicode для символов, которые вам нужны, которые находятся за пределами диапазона US-ASCII. Тем не менее, было бы хорошо убедиться, что вы не путаете кодировки между местом, где файл сохраняется, и местом, где он обслуживается.

Чтобы избежать этих проблем, укажите кодовую точку Unicode для символов, которые вам нужны, которые находятся за пределами диапазона US-ASCII. Тем не менее, было бы хорошо убедиться, что вы не путаете кодировки между местом, где файл сохраняется, и местом, где он обслуживается.

2
ответ дан 29 November 2019 в 03:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: