2017-11-17 52 views
0

,因为我很新的使用这个组合两个正则表达式我有一个两难的使用正则表达式:如何使用AND运算

我有下面的网址:

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

但我想它作为具有相同结果的单正则表达式来完成。

我希望你能帮助我。它驱使我疯狂寻找答案。 。:(

感谢

+1

为什么一个正则表达式,如果两个正则表达式你需要什么? – Teemu

+0

1.你的最终目标是你的正则表达式的目的是什么?使用。 2.这是什么空间? –

+0

我想尝试将它们结合起来,或者至少创建一个单一的regEx作为我试图创建的表单上的一个字段* should *只接受单线程正则表达式。 :( 我试过这种格式^(?=。* some)(?=。*#)但它不起作用 空间只是分开两个,但它并不是一个真正的因素。他们可以用逗号连在一起,也可以合并为一个单词。 –

回答

-1

使用范围每个条件“()”的更多细节回答尝试找到here

0

您可以使用正则表达式的集群系统,你的优势在这里是一个片段:

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

我将两个RegExp条件组合成一个,同时用正确的区域括起来创建两个组。这样,您可以获取指定的组并在其间添加空间。

+0

你好@Tals,我试图运行它,但由于数组匹配,它给了我一个意想不到的错误。当我删除它们时,它给了我一个空值。 我也试图用[0]和[1]分别替换值,但仍然会出现相同的意外错误。 感谢您的建议。 :) –

+1

嗨Tals, 它的一个错误在我的最后,我正在运行它在另一张表,我用于测试哈哈。我很抱歉。这是正确的和正在运行。 –

+0

酷!祝你好运:) – Tals

0

除了一个事实,即你的例子URL是错误的(你有两个搜索PARAMS),因此不太适合一起工作 - 我拥有电子命题:

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

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

,准确地抓住具有明确的语法属性,如:

url.pathname;>> “的东西,在这里/ page.html中”

url.hash;>>“#confirmation订单? = 123“

但是如果你明确的ne编一个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(" "));

+0

嗨,Bekim,非常感谢你。我能够运行它,现在它可以工作。非常感谢你的帮助!^_^ –

+0

@LeaSanchez太好了,(现在你应该把线程标记为已解决,例如接受最适合你的答案)。 :) –