Javascript RegExp - 匹配字符串并替换

Javascript RegExp - Match String and Replace

本文关键字:字符串 串并 替换 字符 RegExp Javascript      更新时间:2023-09-26

我对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') "

请帮忙。如果我不清楚,请告诉我,因为我是新手。提前谢谢。

使用正则表达式,它将是这样的:

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 或更多 [] 之间的任何字符,用括号括起来。

你可以像这样简单地连接。

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

毕竟它只是一个字符串。