只要在文本字段中输入有效的URL,立即调用函数(myFunction())的最佳方法是什么?我已经google了一下,但我没有发现任何有用的东西。使用正则表达式可能是最好的,但我需要一个识别各种URL的方法:
http://google.tld,www.google.tld,http://www.google.tld
但仍然不认为像“index.php”这样的东西是一个URL。有谁知道这样的表达?
答案 0 :(得分:0)
这将匹配任何以“.com”或“.ch”结尾的网址(您必须维护有效TLD列表)
^(http:\/\/)?([\w\.]+\.)((com)|(ch))$
使用javascript,forwardslash不需要转义,TLD可能不那么严格,例如只有2-4个字符。
^(https?://)?([\w\.]+\.)([a-z]{2,4})$
考虑到CanSpice对此问题的评论,难以涵盖允许不同长度的TLD的想法,因为事件触发器可能过早发生。 onchange触发器的时间延迟可以解决这种问题。 应对每种解决方案的精确要求和优缺点进行加权。
答案 1 :(得分:0)
你可能会有点挣扎,因为会有很多不同的可能性。这个匹配任何在技术上是有效的http或https路径的URL(包括域名后面的路径中的任何字符,任意数量的子域等)
((http)s?(://))?[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*(/(.*))?
如果您要排除Intranet,可以使用以下命令强制使用tld:
((http)s?(://))?[a-zA-Z0-9\-]+(\.[a-zA-Z0-9]+)*(\.[a-zA-Z0-9]{2,4})+(/(.*))?
答案 2 :(得分:0)
^((?: HTTPS | FTP):\ / \ /)?([。\ W \] +)([A-Z] {2,4})$
也支持ftp;)