Dart 正则 匹配URL地址的代码示范

13 min read

以下是一个 Dart 正则表达式示例,用于匹配 URL 地址:

import 'dart:html';

void main() {
  RegExp urlPattern = RegExp(r'^(http(s)?:\/\/)?[^\s\.]+\.[^\s]{2,}$');
  InputElement urlInput = querySelector('#url-input');

  urlInput.onInput.listen((event) {
    String url = urlInput.value;
    bool isValid = urlPattern.hasMatch(url);

    if (isValid) {
      print('Valid URL: $url');
    } else {
      print('Invalid URL: $url');
    }
  });
}

该正则表达式可匹配以下类型的 URL:

  • http://example.com
  • https://www.example.com
  • example.com

其中:

  • ^ 匹配字符串的开头。
  • (http(s)?:\/\/)? 匹配可选的 http://https://
  • [^\s\.]+ 匹配任何非空格和非点号的字符。
  • \. 匹配点号。
  • [^\s]{2,} 匹配两个或两个以上的非空格字符。
  • $ 匹配字符串的结尾。

这个正则表达式做了很多事情,包括验证 URI 主机,协议,路径等等。