返回
正则表达式教程:识别网址 (URL)
正则表达式
2024-02-28 15:47:19
一、正则解释
要匹配网址 (URL),可以使用以下正则表达式:
/^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/
^
: 匹配字符串的开头。((ht|f)tps?):\/\/
: 匹配可选的协议(HTTP 或 HTTPS)和双斜杠 (//)。([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+
: 匹配域名,其中包括:[^!@#$%^&*?.\s-]
: 不包含特殊字符或空格的域名前缀部分。([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?
: 不包含特殊字符或空格的最多 63 个字符的后缀部分。\.
: 匹配点号 (.)。
[a-z]{2,6}
: 匹配 2 到 6 个小写字母的顶级域名 (TLD)。\/?
: 匹配可选的尾部斜杠 (/)。
二、使用场景
这个正则表达式可用于多种场景中,例如:
- 从文本中提取网址。
- 验证输入的网址格式。
- 创建更高级别的 URL 解析规则。
三、代码示例
JavaScript
const regex = /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/;
const url = 'https://vuejs.org/v2/api/#v-model';
console.log(regex.test(url)); // true
Java
import java.util.regex.Pattern;
public class UrlMatcher {
public static boolean isValidUrl(String url) {
Pattern pattern = Pattern.compile("^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?");
return pattern.matcher(url).matches();
}
public static void main(String[] args) {
String url = "https://vuejs.org/v2/api/#v-model";
System.out.println(isValidUrl(url)); // true
}
}
PHP
<?php
$regex = '/^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/';
$url = 'https://vuejs.org/v2/api/#v-model';
preg_match($regex, $url, $matches);
if ($matches) {
echo '有效的 URL';
} else {
echo '无效的 URL';
}
?>
Python
import re
regex = r'^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?import re
regex = r'^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?$'
url = 'https://vuejs.org/v2/api/#v-model'
result = re.match(regex, url)
if result:
print('有效的 URL')
else:
print('无效的 URL')
#x27;
url = 'https://vuejs.org/v2/api/#v-model'
result = re.match(regex, url)
if result:
print('有效的 URL')
else:
print('无效的 URL')