2016-03-15 2 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 (", а затем заменить что-нибудь между скобками() с новым идентификаторами String. Например.

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

И почему вы думаете, что вам нужно регулярное выражение для этой цели? –

+0

Две причины: (1) Идентификаторы длины в User_ID IN() исходного условия запроса могут быть изменены; (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

@ Милакай: Что не работает для вас? Может быть, вы пропустили что-то, объяснив свой сценарий. Насколько я вижу, вы только пытаетесь поместить значение 'newUserIDs' в' strQuery'. Для этой цели достаточно простой операции с цепочкой. Regex усложнил бы это и будет сложно, если вы хотите что-то изменить в нем. –

+0

Мне было плохо в объяснении. Извините за путаницу. horacix помог мне с кодом RegExp. – Milacay

Смежные вопросы