2010-01-26 3 views
3

Это сводит меня с ума, у меня есть строка в формате:Javascript заменить символ новой строки

<br /> 
twice<br /> 
imap Test wrote:<div class="nestedMessage1"><br /> 
> nested<br /> 
><br /> 
> [email protected] wrote:<div class="nestedMessage2"><br /> 
>> test<br /> 
>><br /> 
>> -- <br /> 
>> Message sent via AHEM.<br /> 
>> </div><br /> 
><br /><br /></div> 

И следующий код:

string = string.replace(/\n/g, ""); 
string = replaceAll(string, "<br />>", "<br />"); 

function replaceAll(string, replaceString, replaceWith) 
{ 
    return string.replace(new RegExp(replaceString, 'g'),replaceWith); 
} 

То, что я пытаюсь сделать, это удалить < br/и замените его только < br/> Я не могу просто заменить все вхождения>, поскольку они могут содержаться в другом месте строки, поэтому я хочу только удалить их с самого начала. Я попробовал escape-символы и жестко закодировал регулярное выражение, чтобы явно удалить новые строки, а не включать их в вызов функции. Любая помощь будет оценена по достоинству.

+0

вы можете иметь \ г-х там тоже – peller

+0

также у вас есть
>> не только
> –

+0

@peller, насколько я знаю, JavaScript игнорировал символ возврата побега. @Jason: начальный код был зациклен, заменяя количество раз на глубину числа> s. Комментарии всегда приветствуются. :) – Gazler

ответ

9

Если ваша цель состоит в том, чтобы просто удалить все > S в начале строк, которые легко сделать:

var out = in.replace(new RegExp("^>+", "mg"), ""); 

или

var out = in.replace(/^>+/mg, ""); 

Флаг m означает многострочный так ^ и $ будут соответствовать началу и концу строк, а не только началу и концу строки. См. RegExp Object.

Edit: Стоит отметить, что вы должны вероятно пользу использования RegExp объекта по второй форме (регулярное выражение буквальным). См. Are /regex/ Literals always RegExp Objects? и Why RegExp with global flag in Javascript give wrong results?.

Кроме того, существуют различия браузера в том, как глобальный флаг обрабатывается в литерале регулярного выражения, который используется более одного раза. Лучше избегать этого и явно использовать объект RegExp.

+0

Элегантное решение проблемы. Очень признателен. – Gazler

+1

+1 для создания регулярного выражения –

Смежные вопросы