2017-11-17 119 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太好了,(現在你應該把線程標記爲已解決,例如接受最適合你的答案)。 :) –