Javascript - заменить реализации? - PullRequest
0 голосов
/ 20 сентября 2010

Я должен проверить строку клиента. Если он содержит только «\» (1, 2 или 1000 раз), мне нужно от него отказаться. Код (с некоторыми вашими предположениями, которые, к сожалению, не работают):

value.replace(/\\/g, '');
if(value=="") alert("NO"); else alert("YES");

так:

value="\" = NO
value="\hello \people" = YES
value="\\\\hello \\people" = YES
value="hello \\people" = YES
value="hello people\" = YES
value="\\" = NO
value="\\\\\\" = NO
value="\\ \\\\ \ \\\" = NO

Ответы [ 3 ]

3 голосов
/ 20 сентября 2010

Если строка имеет фактические одиночные обратные косые черты (как, например, не обратные косые черты вообще, а экранирующие символы \a и \F в вашем примере), то у вас будет трудное время,однако, если они правильно экранированы, вы можете просто:

str = str.replace( /\\/g, '' )

удалить их.

2 голосов
/ 20 сентября 2010

Как отметил Йи Цзян, единственный надежный способ сделать это - использовать код на стороне сервера.Теперь, конечно, вы можете использовать JavaScript на стороне сервера (я часто это делаю).

Ответ:

updatedString = originalString.replace(/\\/g, '');

... который является RegExp, который глобально заменит всеобратной косой черты без ничего.

Некоторые реализации требуют, чтобы вы сделали это вместо этого:

var re = /\\/g;
re.lastIndex = 0;
updatedString = originalString.replace(re, '');

... или замена может работать некорректно во второй раз.(Да, действительно, и да, я знаю, что это кажется неправильным.) На самом деле, нет, извините, вам нужен сброс только в том случае, если вы не зациклились до конца строки (даже если кажется, что RegEx должен выйти из области видимости, что странно).Поскольку replace идет до конца строки, все в порядке.

0 голосов
/ 20 сентября 2010

В JavaScript:

myvar=myvar.replace(/\\/g,'');

В PHP:

$myvar=str_replace('\\','',$myvar);

Обратите внимание, что им обоим следует поставить двойную обратную косую черту, поскольку это escape-символ.

Это нормально делать в Javascript, но вам, безусловно, нужно будет делать это и на стороне сервера, если вы хотите быть в этом уверенным, поскольку пользователь браузера может отключить javascript, если он хочет обойти вашу проверку. (вы не указали здесь язык на стороне сервера, но я использовал PHP, как вы спрашивали об этом раньше)

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

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