Regex 带URL的复杂正则表达式

Regex 带URL的复杂正则表达式,regex,url,Regex,Url,我想“修复”所有这些URL,以便以下所有URL都有效(所有URL都来自“example.com”域): 之前: httpprache.htm tech-z.htm bla/blubbb.html /suchen/bildung/schulen/abend.htm /suchen/bildung/schulen/beruf.htm www.google.de http://www.google.com/asdf.html https://blabla.com/ 之后: http://exampl

我想“修复”所有这些URL,以便以下所有URL都有效(所有URL都来自“example.com”域):

之前:

httpprache.htm
tech-z.htm
bla/blubbb.html
/suchen/bildung/schulen/abend.htm
/suchen/bildung/schulen/beruf.htm
www.google.de
http://www.google.com/asdf.html
https://blabla.com/
之后:

http://example.com/httpprache.htm
http://example.com/tech-z.htm
http://example.com/bla/blubbb.html
http://example.com//suchen/bildung/schulen/abend.htm
http://example.com//suchen/bildung/schulen/beruf.htm
http://www.google.de
http://www.google.com/asdf.html
https://blabla.com/

如何使用一个或多个正则表达式执行此操作?

为了让我们帮助您完成此任务,您必须更精确地确定何时应将其固定到域example.com以及何时只应将url更正到另一个域。正如我现在看到的,您只需查看www、http还是https”(www | http | https)在url中。如果没有,则可以在字符串前面加“”前缀

如果字符串中有“www”,而“http”不在,则可以在字符串开头添加“http://”


然而,从您提供的几个示例中扣除这些,可能还有数千个其他案例需要注意,证明这可能会变成一项非常复杂的任务。

为了让我们帮助您完成这项任务,您必须更精确地说明何时应将其固定到domain example.com上,以及何时只应将urld将被更正到另一个域。正如我现在看到的,您可以简单地检查url中是否有www、http或https“(www | http | https)”。如果没有,您可以在字符串前面加上“”

如果字符串中有“www”,而“http”不在,则可以在字符串开头添加“http://”

然而,从您提供的几个示例中扣除这些,可能还有数千个其他案例需要注意,证明这可能会变成一项非常复杂的任务。

使用sed样式的正则表达式:

带有URL的cat文件| sed's/^(www.[^.]+.[a-z]+$)/http://\1/'| sed'/^https\?://!s/^/http://example.com//"

第一个:

如果字符串以“www.”开头,一系列字母,一个单点,然后是一个或多个字母,请在前面添加http://

第二个:

如果字符串不是以http://或https://开头,则将sed样式的正则表达式放在前面:

带有URL的cat文件| sed's/^(www.[^.]+.[a-z]+$)/http://\1/'| sed'/^https\?://!s/^/http://example.com//"

第一个:

如果字符串以“www.”开头,一系列字母,一个单点,然后是一个或多个字母,请在前面添加http://

第二个:


如果字符串不是以http://或https://开头,请放在前面

这段代码可以帮助您:

var fields = url.match( /(.*)[:/]{3}([^:/]+)[:]?([^/]*)([^?]*)[?]?(.*)/ );
if(fields === null){
    throw new Error('bar url param');
}
var protocol = fields[1];
var host = fields[2];
var port = fields[3];
var path = fields[4];
var query = fields[5];

然后,您可以根据需要编写url。

这段代码可以帮助您:

var fields = url.match( /(.*)[:/]{3}([^:/]+)[:]?([^/]*)([^?]*)[?]?(.*)/ );
if(fields === null){
    throw new Error('bar url param');
}
var protocol = fields[1];
var host = fields[2];
var port = fields[3];
var path = fields[4];
var query = fields[5];
然后,您可以根据需要编写url