我使用下面的函数来匹配给定文本中的URL并替换它们用于HTML链接.正则表达式工作得很好,但目前我只是替换了第一场比赛.
我如何替换所有的URL?我想我应该使用exec命令,但我并没有真正想到如何做到这一点.
function replaceURLWithHTMLLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
return text.replace(exp,"<a href='$1'>$1</a>");
}
Run Code Online (Sandbox Code Playgroud) 有没有人建议检测一组字符串中的URL?
arrayOfStrings.forEach(function(string){
// detect URLs in strings and do something swell,
// like creating elements with links.
});
Run Code Online (Sandbox Code Playgroud)
更新:我使用这个正则表达式进行链接检测...显然几年后.
kLINK_DETECTION_REGEX = /(([a-z]+:\/\/)?(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal))(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(\s+|$)/gi
Run Code Online (Sandbox Code Playgroud)
完整的助手(可选的Handlebars支持)在要点#1654670.
在此网址中:
http://www.subdomain.domainname.abc.xyz.com.us/directory/filename.extension
Run Code Online (Sandbox Code Playgroud)
我有以下url验证正则表达式:
/(ftp | https?):// [^"] + $ /
这是来自ref: 用于URL验证的正则表达式(在JavaScript中)
这很好,包括像http://localhost:8080,但它也验证了我不想要的下面的情况.上面的正则表达式不应该通过以下网址
1. http://www.example..com
2. http://.com
3. http://.
4. http://www.example.
Run Code Online (Sandbox Code Playgroud)
请正确帮助我作为正则表达式的菜鸟
第二个问题,虽然与问题没有关系,但正则表达式是,当我验证null和未定义的正则表达式/ ^ [az] + $/i我得到了真.这是默认行为还是我错过了这里的东西?