2017-01-25 23 views
0

分組我想使用字符串的正則表達式這樣操作:這樣的比賽在新的RegExp對象

string = '?order=age' 
var order_regex_asc = /([&?])order=([a-z])/g; 
new_string = string.replace(order_regex_asc, '$1order=-$2'); 
// The code above will result to "?order=-age" 

我知道上面的代碼將工作,就是那種邏輯的,我需要

然而如該命令的

order=([a-z]) 

的值被認爲是一個可變不是正則表達式的一部分。我無法找到一個方法來插入一個正則表達式語句的變量,所以我嘗試下面

data = 'age' 
string = 'http://example.com?order=age&order=color&order=gender' 
order_regex_asc = new RegExp('[&?]order=' + data, 'g') 
new_string = string.replace(order_regex_asc, 'Hi I am a new string'); 

代碼現在我對這個代碼的問題是我無法實現匹配分組。我不知道下一步該做什麼。我只想改變'?order = age''?order = -age'並記住該訂單的價值是動態的。它可以是身高,體重等

Plunkr:https://plnkr.co/edit/nE6MK7PWb54GkXOdIojn?p=preview

請記住,如果你點擊任何按鈕不止一次,它應該只是在GET參數發揮推杆和上去除一個連字符之間值 '年齡'

+1

'string.replace(/ order =([az] +)/ i,' - $ 1')' – Tushar

+0

我需要[az]是一個變量,想象一下,我將點擊一個按鈕並添加一個連字符選擇變量 –

+0

一個更好的方法是使用'window.URL'功能而不是RegExp。我們通常已經意識到在項目中使用正則表達式有多糟糕。即使RegExp似乎解決了所有問題。 https://developer.mozilla.org/en-US/docs/Web/API/URL –

回答

1

這是你想要的東西:

data = 'age' 
 
string = 'http://example.com?order=age&order=color&order=gender' 
 
order_regex_asc = new RegExp('([&?]order=)(' + data +')', 'g') 
 
new_string = string.replace(order_regex_asc, '$1-$2'); 
 
console.log(new_string);

+0

其實是的,所以這是如何在創建新的正則表達式對象時匹配正則表達式 –