Regex не найдет символы юникода '\ u2028' - PullRequest
4 голосов
/ 30 июня 2010

У нас много проблем с отслеживанием источника \ "Разделителя строк" в данных, отправляемых пользователем, что приводит к ошибке "неопределенный строковый литерал" в Firefox.

В результате мы смотрим на его фильтрацию перед отправкой на сервер (а затем в базу данных).

После интенсивного поиска в Google и чтения проблем других людей становится ясно, что я должен отфильтровать эти символы перед отправкой в ​​базу данных.

Перед написанием фильтра я попытался найти символ, чтобы убедиться, что он может найти его, используя:

var index = content.search("/\u2028/");
alert("Index: [" + index + "]");

Я получаю -1 как результат каждый раз, даже когда я знаю, что символ находится в переменной содержимого (я подтвердил с помощью теста Java jUnit на стороне сервера).

Предполагая, что content.replace () будет работать так же, как search (), я что-то не так делаю или чего-то не хватает, чтобы найти и удалить эти разделители строк?

1 Ответ

6 голосов
/ 30 июня 2010

Ваш синтаксис регулярных выражений неверен.Вы используете только две косые черты при использовании литерала регулярных выражений.Это должно быть просто:

var index = content.search("\u2028");

или:

var index = content.search(/\u2028/); // regex literal

Но это действительно должно быть сделано на сервере, если угодноСанация JavaScript может быть тривиально обойдена.Это полезно только для удобства пользователя, и я не думаю, что случайный ввод разделителя строк является настолько распространенным явлением.

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