jsfiddle не удается на этом регулярном выражении? - PullRequest
0 голосов
/ 19 ноября 2011

Я прототипирую некоторую обработку текста, чтобы подготовить данные исследований для кодирования, и у меня есть оператор замены javascript - бомбы в jsFiddle, и я не могу понять, почему:

   mE[1] = mE[1].replace(/<p.*>/ig, '');­ // <<< this line

Я пытаюсь удалить любой открывающий тег абзаца.

Если вы посмотрите на http://jsfiddle.net/jotarkon/2e5gq/,, раскомментируйте эту строку и увидите, что сценарий завершился неудачей.

- нажмите на заголовок, чтобы запустить функцию

Это сводит меня с ума. есть идеи что не так?

Ответы [ 2 ]

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

Кажется, проблема в том, что где-то в этой строке есть недопустимый символ, и я не думаю, что это имеет какое-либо отношение к регулярному выражению. Попробуйте набрать всю строку с нуля и удалите эту. Когда я это делаю, скрипка работает нормально (ну, по крайней мере, она не получает эту ошибку).

изменить & mdash; недопустимый символ - сразу после точки с запятой в этой строке. Начиная с "//" в комментарии "эта строка", нажмите несколько раз клавишу backspace, чтобы стереть фиктивный символ и точку с запятой, затем введите точку с запятой еще раз.

изменить еще немного - Символы представляют собой последовательность C2 AD (шестнадцатеричное).

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

Прежде всего, не используйте regexen для HTML. Для этого есть библиотеки. Вы не можете разобрать HTML с регулярным выражением. Во-вторых, вам нужно быть более конкретным. Сказать «заявление о замене бомбы» ничего не говорит нам о природе ошибки. Наконец, если вам интересно, это регулярное выражение является жадным, поэтому оно заменит все, начиная от первого HTML-тега, начинающегося с буквы p, до самого последнего > в вашем вводе без разбора. Если вы действительно хотите использовать это, сделайте его нежадным и убедитесь, что он не совпадает с другими тегами, которые начинаются с буквы p. Я не собираюсь быть конкретным, потому что это неправильный ответ.

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