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

Мы используем отличныеплагин валидатора для jQuery здесь для переполнения стека, чтобы выполнить проверку входных данных на стороне клиента перед их отправкой на сервер.

Это обычно работает хорошо, однако, этот заставляет нас чесать голову.

Следующий метод проверки используется в форме запроса / ответа для поля имени пользователя (обратите внимание, что вы должны бытьlogged out увидеть это поле на живом сайте; это на каждом/question страница и/ask страница)

$.validator.addMethod("validUserName",
  function(value, element) {
  return this.optional(element) || 
  /^[\w\-\s\dÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð]+$/.test(value); },
  "Can only contain A-Z, 0-9, spaces, and hyphens.");  

Теперь это регулярное выражение выглядит странно, но довольно просто:

match the beginning of the string (^) match any of these.. word character (\w) dash (-) space (\s) digit (\d) crazy moon language characters (àèìòù etc) now match the end of the string ($)

Да, мы столкнулись сИнтернационализированные регулярные выражения проблема. JavaScript-определение слова "символ" & quot; не включает международные символы .. вообще.

Вот странная часть: хотя мы и столкнулись с проблемой ручного добавления в регулярное выражение множества допустимых международных символов, этоdoesn't work, Вы не можете ввести эти международные символы в поле ввода имени пользователя, не получив ..

Can only contain A-Z, 0-9, spaces, and hyphens

.. подтверждение возврата!

очевидноthe validation is working for the other parts of the regex.. так .. что дает?

Другая странная часть заключается в том, что эта проверка работает в консоли JavaScript браузера, но не при выполнении в качестве части нашего стандартного включения * .js.

/^[\w-\sÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð]+$/ .test('ÓBill de hÓra') === true

Ранее мы сталкивались с некоторыми действительно странными международными проблемами символов в коде JavaScript, что приводило к некоторым очень и очень неприятным взломам. Мы хотели бы понять, что здесь происходит и почему. Пожалуйста, просветите нас!

Ответы на вопрос(7)

Ваш ответ на вопрос