使用正则表达式时我处于两难境地,因为我在使用它时非常新:
我有以下网址:
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);
但我希望将其作为单个正则表达式完成,但结果相同。
答案 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