[英]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.