Ale*_*man 6 javascript java regex
在JavaScript中,我有以下内容:
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>");
}
Run Code Online (Sandbox Code Playgroud)
它将输入字符串中的所有URL替换为包含锚标记的URL版本,以将其转换为链接.我正在尝试使用以下函数在Java中复制此功能:
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>");
}
Run Code Online (Sandbox Code Playgroud)
但是,虽然它在JavaScript中工作正常,但在Java中找不到任何匹配项,即使对于相同的输入字符串也是如此.我是否需要更改模式中的某些内容,或者发生了什么?
对于 Java 示例,您需要去掉表达式周围的斜杠和i末尾的 。您可以i单独指定标志。因此 JavaScript/blarg/i将被转换为"(?i)blarg".
你的代码会变成这样:
private String replaceURLWithHTMLLinks(String text) {
String pattern = "(?i)(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])";
return text.replaceAll(pattern, "<a href=\"$1\">$1</a>");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5896 次 |
| 最近记录: |