繁体   English   中英

如何使用AND运算符合并两个正则表达式

[英]How to combine two regex using AND operator

我在使用正则表达式时遇到了难题,因为我在使用此表达式时非常陌生:

我的网址如下:

var url = https://website.com/something-here/page.html?p=null#confirmation?order=123

我的预期结果是:

/something-here/page.html #confirmation

它可以是空格或逗号,也可以简单地将两者结合起来(/something-here/page.html#confirmation)

我可以使用下面的两个正则表达式来做到这一点:

var a= url.match(/som([^#]+).html/)[0];

var b= url.match(/#([^#]+).tion/)[0];

console.log(a,b);

但我想将其作为单个正则表达式来完成,并获得相同的结果。

您可以使用RegExp的分组系统来发挥自己的优势。 这是一个片段:

var matches = url.match(/(som[^#]+.html).*?(#[^#]+.tion)/);
console.log(matches[1] + " " + matches[2]); // prints /something-here/page.html #confirmation

我将您的两个RegExp条件合并为一个,同时在正确的区域中用括号将它们括起来以创建两个组。

这样,您可以获取指定的组并在两者之间添加一个空格。

除了您的示例网址格式错误(您有两个搜索参数)之外,因此不太适合使用-我有一个建议:

为什么不使用URL对象及其属性?

url = new URL("https://website.com/something-here/page.html?p=null#confirmation?order=123");

并使用如下显式语法精确地获取属性:

url.pathname; >>“ something-here / page.html”

url.hash; >>“ #confirmation?order = 123”

但是如果您明确需要RegExp变体

这是一个

 var url = "https://website.com/something-here/page.html?p=null#confirmation?order=123"; var match = url.match(/\\/som.*?html|\\#.*?tion/g); console.log(match.join(" ")); 

在范围“()”中使用每个条件,更多详细信息请尝试在此处查找

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM