2009-05-09 19 views

Respuesta

3

Creo que quieres esto:

str.replace(/^(.*)<br>(.*?)$/, '$1$2') 

Esto coincide con avidez todo, desde el comienzo de una <br>, a continuación, un <br>, entonces ungreedily partidos todo hasta el final.

+1

molestaría que quieren que sea: str.replace (/^(. *) ((
) *?) $ /, '$ 1 $ 2') para incluir el
en el último partido? –

+0

La idea es eliminar el último
Greg

13

Puede utilizar el hecho de que los cuantificadores son codiciosos:

str.replace(/(.*)<br>/, "$1"); 

Pero la desventaja es que hará que dar marcha atrás.

Otra solución sería la de dividir la cadena, poner los dos últimos elementos juntos y luego unir las partes:

var parts = str.split("<br>"); 
if (parts.length > 1) { 
    parts[parts.length - 2] += parts.pop(); 
} 
str = parts.join("<br>"); 
+0

'str.replace (/ ([\ s \ S] *)
/," $ 1 ");' para multilínea. – hlcs

0
String.prototype.replaceLast = function(what, replacement) { 
    return this.replace(new RegExp('^(.*)' + what + '(.*?)$'), '$1' + replacement + '$2'); 
} 

str = str.replaceLast(what, replacement); 
+0

Una respuesta que consiste únicamente en un código sin o con poca explicación hace que sea difícil de entender para los visitantes futuros qué enfoque debe tomar el solicitante y por qué su respuesta es viable. Por favor agregue explicaciones a su código. – Xufox

Cuestiones relacionadas