Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于匹配不同类型的http类型字符串的正则表达式_Javascript_Regex_Linux - Fatal编程技术网

Javascript 用于匹配不同类型的http类型字符串的正则表达式

Javascript 用于匹配不同类型的http类型字符串的正则表达式,javascript,regex,linux,Javascript,Regex,Linux,在文本文件中,有一个字符串编码http相关信息。以下是字符串示例 URL 123.34.45.7:http://captive.apple.com/hotspot-detect.html 或 我编写了一些正则表达式来提取部分直到http,例如 url)\\s\\d+[.]\\d+[.]\\d+[.]\\d+[:](http|https|ftp) 但是我不知道如何编写正则表达式来匹配http后面的部分。谢谢。试试下面的正则表达式: /^(URL[^:]+:)(?:.*?\/\/)(.*)/gm

在文本文件中,有一个字符串编码http相关信息。以下是字符串示例

URL 123.34.45.7:http://captive.apple.com/hotspot-detect.html

我编写了一些正则表达式来提取部分直到http,例如

url)\\s\\d+[.]\\d+[.]\\d+[.]\\d+[:](http|https|ftp)
但是我不知道如何编写正则表达式来匹配http后面的部分。谢谢。

试试下面的正则表达式:

/^(URL[^:]+:)(?:.*?\/\/)(.*)/gm
演示:

它将打印:

URL 123.34.45.7:captive.apple.com/hotspot-detect.html

要在给定(可能较大)字符串中查找类型为“URL[IP地址]:[URL]”的字符串,请尝试以下操作:

var patterns = {
   ip: '\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}',
   url: (() => {
      var protocol = '(http(s)?(:\/\/))?(www\.)?';
      var domains = '[a-zA-Z0-9-_\.]+';
      var params = '([-a-zA-Z0-9:%_\+.~#?&//=]*)';
      return protocol + domains + params;
   })()
}

var regex = new RegExp(`URL ${patterns.ip}:${patterns.url}`);

查看此小提琴:

*
将多次匹配任何字符

因此,如果将其添加到字符串末尾,您将得到:

url\s\d+[.]\d+[.]\d+[.]\d+[:](http|https|ftp).*
这将一直匹配到最后一行

注意,为了可读性,我将
\\
改为
\
。你可能需要重新逃离他们


那么您想捕获(看起来)IP地址?http之前的文本?我想从一个大文本文件中捕获整个字符串URL 123.34.45.7:谢谢,但我想从整个文本文件中提取整个字符串,比如URL 123.34.45.7:嗯,这很简单。它已经捕获包括URL,但我不确定你需要显示什么只是IP部分
var patterns = {
   ip: '\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}',
   url: (() => {
      var protocol = '(http(s)?(:\/\/))?(www\.)?';
      var domains = '[a-zA-Z0-9-_\.]+';
      var params = '([-a-zA-Z0-9:%_\+.~#?&//=]*)';
      return protocol + domains + params;
   })()
}

var regex = new RegExp(`URL ${patterns.ip}:${patterns.url}`);
url\s\d+[.]\d+[.]\d+[.]\d+[:](http|https|ftp).*