2016-03-15 114 views
-1

我對RegExp非常陌生。我想要做的是:Javascript RegExp - 匹配字符串並替換

我有這個原始的查詢條件。

var strQuery = "AND i.CreatedDate BETWEEN CAST('01/01/2014' AS Date) " + 
    "AND DATEADD(Day, 1, CAST('01/01/2015' AS DATE)) " + 
    "AND e.User_ID IN (-1, 1234, 3433, 9999) " + 
    "AND i.STATUS IN ('Completed') AND o.Type IN ('Production') " 

現在,查找字符串「e.User_ID IN(」然後括號(之間更換任何東西)與新的ID字符串,例如。

var newUserIDs = "8888, 3333, 4444" 

// After search and replace using RegExp. 
var strQuery = "AND i.CreatedDate BETWEEN CAST('01/01/2014' AS Date) " + 
    "AND DATEADD(Day, 1, CAST('01/01/2015' AS DATE)) " + 
    "AND e.User_ID IN (8888, 3333, 4444) " + 
    "AND i.STATUS IN ('Completed') AND o.Type IN ('Production') " 

請幫助。讓我知道如果我不清楚,因爲我事先是新來這個。 感謝。

+0

爲什麼你認爲你需要這個目的的正則表達式? – 2016-03-15 16:41:54

+0

兩個原因:(1)原始查詢條件的User_ID IN()內的長度ID可以改變; (2)我想學習RegExp。謝謝 – Milacay

+0

標記我的帖子不清楚的人不是一個好人。我只是想學習......所以不要那樣。 – Milacay

回答

1

使用正則表達式將是這樣的:

var strQuery = "AND i.CreatedDate BETWEEN CAST('01/01/2014' AS Date) " + 
 
    "AND DATEADD(Day, 1, CAST('01/01/2015' AS DATE)) " + 
 
    "AND e.User_ID IN (-1, 1234, 3433, 9999) " + 
 
    "AND i.STATUS IN ('Completed') AND o.Type IN ('Production') "; 
 

 
var newUserIDs = "8888, 3333, 4444"; 
 

 
var newQuery = strQuery.replace(/User_ID IN \([\d, -]*\)/,"User_ID IN (" + newUserIDs + ")"); 
 

 
alert(newQuery);

您正在搜索您的線索,其次是0以上的任何用括號包圍[]之間的字符。

+0

非常感謝@horacix。這正是我所期待的。 – Milacay

1

你可以簡單地串聯這樣。

var newUserIDs = "8888, 3333, 4444" 
 

 
// After search and replace using RegExp. 
 
var strQuery = "AND i.CreatedDate BETWEEN CAST('01/01/2014' AS Date) " + 
 
    "AND DATEADD(Day, 1, CAST('01/01/2015' AS DATE)) " + 
 
    "AND e.User_ID IN (" + newUserIDs + ") " + 
 
    "AND i.STATUS IN ('Completed') AND o.Type IN ('Production') " 
 

 
alert(strQuery);

畢竟它只是一個字符串。

+0

感謝您的幫助。我意識到這不適合我,但無論如何我都接受了解決方案,因爲這是我的錯。整個strQuery條件也可能發生變化,這就是我想使用RegExp的原因。我會盡力爲此尋找另一種解決方案,但感謝您試圖提供幫助。 – Milacay

+0

@Milacay:什麼不適合你?可能是你錯過了一些解釋你的場景的東西。據我所見,你只是試圖將'newUserIDs'的值放入'strQuery'中。一個簡單的字符串操作就足夠了。正則表達式會使這個複雜化,如果你想改變它的話會很困難。 – 2016-03-15 17:19:41

+0

我是我的不好解釋。對困惑感到抱歉。 horacix幫助我使用RegExp代碼。 – Milacay