我使用以下Regex查找并使用字符串中的URL:
$regex = '/(?:www\.|https?:\/\/)?[a-z0-9]+\.[a-z0-9]{2,4}\S*\b/';
$string = preg_replace_callback($regex, function($matches) {
// ... use as $matches[0]
}, $string);
我的问题始于价格:例如,此正则表达式匹配字符串3.99
中的Only 3.99$ today!
。这不应该发生,我已经研究并发现查找和验证URL并不是一项简单的任务。
尽管如此,如果没有全数字TLD,我可以从扩展的捕获集中删除0-9
。但是我找不到任何TLD不能仅包含数字的声明,所以这个问题仍然存在。
是否可以放弃0-9
范围(长期使用)?