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

时间:2017-11-17 21:56:08

标签: javascript regex

使用正则表达式时我处于两难境地,因为我在使用它时非常新:

我有以下网址:

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);

但我希望将其作为单个正则表达式完成,但结果相同。

3 个答案:

答案 0 :(得分:0)

您可以使用RegExp的群组系统。这是一个片段:

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

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

这样,您可以获取指定的组并在其间添加空格。

答案 1 :(得分:0)

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

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

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

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

url.pathname; >> “什么,这里/ page.html中”

url.hash; >> “#confirmation?顺序= 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(" "));

答案 2 :(得分:-1)

在范围内使用您的每个条件“()”更多详细信息,请尝试查找here