用于查找精确给定字符集的正则表达式,后跟另一个字符集

时间:2014-04-03 06:57:39

标签: javascript regex css-selectors

我写了一个RegEx来替换,

#aa with #abcd 
.aa with .abcd
#aa> with #abcd>
#aa{ with #abcd{
#aa+ with #abcd+
#aa { with #abcd {
#aa{ with #abcd{

但是

#aaa{不应替换为#abcd{

我在javascript中使用以下正则表达式,

"test#aaa{".replace(/(#|.)aa(\s|\+|\.|>|,|{)/g, "$1abcd$2")

理想情况下,我的用例是,使用CSS ID/CLASS替换cssfileConents中的new ID/CLASS

var cssContent = "test#aaa{";
var exp = "(#|.)" + oldIdValue + "(\\s|\\+|\\.|>|,|{)";
var regEx = new RegExp(exp, "g");
cssContent.replace(regEx, "$1" + newvalue + "$2");

原谅我的格式:)

3 个答案:

答案 0 :(得分:1)

您可以使用:

var repl = string.replace(/(#|.)\baa\b(\s|\+|\.|>|,|{)/g, "$1abcd$2");

答案 1 :(得分:0)

试试这个:

"test#aaa{".replace(/([#.])aa(?![a-zA-Z])/g, "$1abcd");

在角色类[]内,.表示仅点角色。但在[]之外,.表示任何非空格字符(您现在正在使用)。

(?![a-zA-Z])是负面的预测。无论如何,检查下一个字符是否在az之间。

答案 2 :(得分:0)

使用此正则表达式

([^a])aa([^a])

在你的控制台中试试

var res = "test#aa{".replace(/([^a])aa([^a])/g, "$1abcd$2");
console.log(res);

演示:

http://regex101.com/r/sO0cE2