返回

正则表达式教程:带端口号的网址(或ip)

正则表达式

一、正则解释

/^((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)