Javascript 正则表达式?不起作用
我不知道为什么。问题是,您需要一个非Javascript 正则表达式?不起作用,javascript,regex,node.js,browser,Javascript,Regex,Node.js,Browser,我不知道为什么。问题是,您需要一个非{的字符出现在\n之前。在第一个字符中有\r,然后没有\r但是\n匹配,所以一切都很好 第二个字符是\n,没有匹配的\n,因此失败 您可能想使用look behind来检查之前是否没有{,而不需要存在字符。这实际上不足以在适当的上下文中正确检查“use strict”的存在,但对您来说可能就足够了。关于@Sami的答案,这是完全正确的(您检查一个后跟回车/换行符的字符,并且在您的输入中从未出现过),它看起来更需要一个否定的断言,而不是匹配一个字符。@Sami使
{
的字符出现在\n
之前。在第一个字符中有\r
,然后没有\r
但是\n
匹配,所以一切都很好
第二个字符是\n
,没有匹配的\n
,因此失败
您可能想使用look behind来检查之前是否没有
{
,而不需要存在字符。这实际上不足以在适当的上下文中正确检查“use strict”
的存在,但对您来说可能就足够了。关于@Sami的答案,这是完全正确的(您检查一个后跟回车/换行符的字符,并且在您的输入中从未出现过),它看起来更需要一个否定的断言,而不是匹配一个字符。@Sami使用了lookback,直到您的问题标记,您只能使用lookahead:(?!{)
var contents=[];
目录。推送('\r\n“使用严格”;');
目录。推送('\n“使用严格”;);
push(“{\n”使用严格“;”);
var useStrictRegExp=/((?!{)\r?\n)['“]使用strict['“];/g;
对于(变量i=0;i }
您在代码的([^{]\r?\n)
部分有问题。我无法理解您试图做什么。除此之外,您需要退出[\'\'”]
我认为您的序列匹配“和”是错误的,请检查:并使用灌浆1即$1@MegaMind为什么需要转义引号?这是一个正则表达式文本,而不是字符串。
var contents = [];
contents.push('\r\n"use strict";');
contents.push('\n"use strict";');
var useStrictRegExp = /([^{]\r?\n)['"]use strict['"];/g;
for (var i = 0; i < contents.length; ++i) {
var content = contents[i];
console.log('before', content);
var replaced = content.replace(useStrictRegExp, '$1');
console.log('after', replaced);
}
before
"use strict";
after
before
"use strict";
after
"use strict";
/((?!{)\r?\n)['"]use strict['"];/g