JavaScript正则表达式可将网址分为域和路径

时间:2019-06-21 15:49:47

标签: javascript regex

我需要一个正则表达式将给定的URL分为两部分。

part1->域(包括协议[http或https](如果存在)。

第2部分->其余部分

这样的事情:

示例1

let url = "https://www.example.com/asdasd/123asdsd/sdasd?bar=1"

regex返回

domain = https://www.example.com

remaining path = /asdasd/123asdsd/sdasd?bar=1


示例2

let url = "www.example.com/asdasd/123asdsd/sdasd?bar=1"

regex返回

domain = www.example.com

remaining path = /asdasd/123asdsd/sdasd?bar=1


示例3

let url = "example.com/asdasd/123asdsd/sdasd?bar=1"

regex返回

domain = example.com

remaining path = /asdasd/123asdsd/sdasd?bar=1


示例4

let url = "http://example.com"

regex返回

domain = http://example.com

remaining path = null

3 个答案:

答案 0 :(得分:1)

我建议使用URL interface而不是正则表达式。尽管它无法处理示例2和3,但它可以拉出您需要的所有位。

来自MDN:

  

URL接口用于解析,构造,规范化和编码URL。它通过提供允许您轻松阅读和修改URL组件的属性来工作。通常,通过在调用URL的构造函数时将URL指定为字符串或提供相对URL和基本URL来创建新的URL对象。然后,您可以轻松地读取URL的解析组件或对URL进行更改。

满足您要求的示例

$Prids = get-content -Path C:\Temp\sqltest.txt
foreach ($prid in $prids){
$filterDate = [datetime]::Today.AddDays(-22)
Get-CdPac2000Problems  -PId $Prid  | Where-Object {$_.ClosedDate.Date -ge $filterDate} |ft PID,ClosedDate,ClosedByELID,ResponsibleGroup,ReferredDate -autosize
}

答案 1 :(得分:1)

使用URL

studentIdText.focusedProperty().addListener((observable, wasFocused, focused) -> {
    if (!focused && !studentIdText.getText().trim().isEmpty()) {
        searchStudent();
    }
});

有人用URL打败了我,所以我也会发布正则表达式。

var url = new URL("https://www.example.com/asdasd/123asdsd/sdasd?bar=1");
var domain = `${url.protocol}//${url.host}`;
var path = `${url.pathname}?${url.searchParams.toString()}`;
console.log(`domain = ${domain}`)
console.log(`remaining path = ${path}`)

答案 2 :(得分:0)

这是细分的javascript版本。希望这有助于了解

//removes protocol
let regEx = /^(?:www\.)?(.*?):\/\//gim;
let url = "https://www.example.com/asdasd/123asdsd/sdasd?bar=1"
let path = url.replace(regEx, "");
console.log("path = " + path);

//removes domain extracts route
let regEx2 = /^(.*?\/)/;
if (path.match(regEx2)) {
  let route = "/" + path.replace(regEx2, "");
  console.log("route", route);

  //extracts domain
  url = path.match(regEx2);
  let domainUrl = url[0].replace("/", "");
  console.log("domainUrl = ", domainUrl);
}