返回
正则表达式教程:带端口号的网址(或ip)
正则表达式
2024-02-28 08:00:00
一、正则解释
/^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/
说明:
- ^: 匹配字符串的开头。
- ((ht|f)tps?://): 匹配可选的协议部分(http或https),后面跟着一个冒号和两个斜杠。
- [\w-]+: 匹配一个或多个字母、数字或下划线字符。
- (.[\w-]+)+: 匹配一个或多个由点分隔的域部分。
- :: 匹配一个冒号。
- \d{1,5}: 匹配一个包含 1 到 5 个数字的端口号。
- /?: 匹配可选的尾部斜杠。
- $: 匹配字符串的结尾。
二、使用场景
这个正则表达式可以用于以下场景:
- 验证带端口号的网址或ip地址的格式。
- 从文本中提取带端口号的网址或ip地址。
- 限制用户只能输入带端口号的网址或ip地址。
三、代码示例
JavaScript
const regex = /^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/;
const text = 'https://www.qq.com:8080,127.0.0.1:5050,baidu.com:8001,http://192.168.1.1:9090';
console.log(text.match(regex));
Java
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
String regex = "^((ht|f)tps?:\\/\\/)?[\\w\\-]+(\\.[\\w\\-]+)+:\\d{1,5}\\/?import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
String regex = "^((ht|f)tps?:\\/\\/)?[\\w\\-]+(\\.[\\w\\-]+)+:\\d{1,5}\\/?$";
String text = "https://www.qq.com:8080,127.0.0.1:5050,baidu.com:8001,http://192.168.1.1:9090";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
quot;;
String text = "https://www.qq.com:8080,127.0.0.1:5050,baidu.com:8001,http://192.168.1.1:9090";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
PHP
<?php
$regex = "/^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/";
$text = 'https://www.qq.com:8080,127.0.0.1:5050,baidu.com:8001,http://192.168.1.1:9090';
preg_match_all($regex, $text, $matches);
print_r($matches[0]);
?>
Python
import re
regex = r"^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?import re
regex = r"^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$"
text = 'https://www.qq.com:8080,127.0.0.1:5050,baidu.com:8001,http://192.168.1.1:9090'
matches = re.findall(regex, text)
print(matches)
quot;
text = 'https://www.qq.com:8080,127.0.0.1:5050,baidu.com:8001,http://192.168.1.1:9090'
matches = re.findall(regex, text)
print(matches)