En JavaScript, Tengo el siguiente:Diferencias en los patrones de expresiones regulares entre JavaScript y Java?
function replaceURLWithHTMLLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
}
Sustituye a todas las URL en la cadena de entrada con una versión de la URL que tiene una etiqueta de ancla envuelto alrededor de él para convertirlo en un enlace. Estoy tratando de duplicar esta funcionalidad en Java con la siguiente función:
private String replaceURLWithHTMLLinks(String text) {
String pattern = "/(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/i";
return text.replaceAll(pattern, "<a href=\"$1\">$1</a>");
}
Sin embargo, aunque funciona bien en JavaScript no encuentra ninguna coincidencia en Java, incluso para la misma cadena de entrada. ¿Debo cambiar algo en el patrón, o qué está pasando?
Lo siento por offtopic, pero el uso de expresiones regulares para analizar las etiquetas HTML no es seguro y emm .. fea. –