Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式?不起作用_Javascript_Regex_Node.js_Browser - Fatal编程技术网

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