Regex не работает в Javascript с IE 7 - PullRequest
1 голос
/ 17 ноября 2011
last_tag="abcde   x";
last_tag = last_tag.replace(/[\s]+x$/, '');

это моя проблема: мне нужно удалить «х» в конце моей строки. Этот кусок кода используется в плагине, который я использовал без проблем до сих пор. В IE 7 «last_tag» выбран неправильно, поэтому я получаю «x» и мне нужно его удалить. Я думаю, кто написал плагин добавил эту замену, чтобы сделать именно это, но он не работает на IE7.

Пример: before: last_tag = "abcde x" после: last_tag = "abcde"

На самом деле проблема в том, что last_tag остается точно таким же.

Правильно ли регулярное выражение? есть ли ошибка или проблема совместимости с IE?

РЕДАКТИРОВАТЬ: Возможно, регулярное выражение не является проблемой.

Я пробовал этот кусок кода, но ничего не происходит:

var temp_tag="abc x";
alert(temp_tag);
temp_tag = temp_tag.replace(/[\s]+x$/, '');
alert(temp_tag)

Один и тот же кусок кода отлично работает на Chrome.

Ответы [ 3 ]

3 голосов
/ 17 ноября 2011

Регулярное выражение выглядит хорошо, но возможно вы пытаетесь сопоставить неразрывных пробелов (U+00A0). \s не совпадает с таковым в IE (как объяснено в в этом ответе ), но в FireFox и Chrome -

2 голосов
/ 17 ноября 2011

Я бы пошел на этот RegExp

/\s+x$/

не использовать класс символов [] для \s, который уже является классом символов
(сокращение для чего-то вроде [ \t\r\n\v\f]) (пробел, табуляция, возврат каретки, перевод строки, вертикальная табуляция, перевод формы)


редактировать
Алан Мур прав: попробуйте это вместо

/[\s\u00A0]+x$/

редактировать
может быть, это чувствительно к регистру: возможно \u00a0 не будет правильным

это должно соответствовать каждому пробелу, а также неразрывным пробелам

0 голосов
/ 17 ноября 2011

Попробуйте это

last_tag = last_tag.replace(/[\t\r\n]+x$/, '');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...