Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 str“替换使用”;加上;及;减;正则表达式中的字符_Javascript_Regex_Str Replace - Fatal编程技术网

Javascript str“替换使用”;加上;及;减;正则表达式中的字符

Javascript str“替换使用”;加上;及;减;正则表达式中的字符,javascript,regex,str-replace,Javascript,Regex,Str Replace,我需要在所有实例中替换字符串中的两个不同字符,所以我找到了这个答案 <script type="text/javascript"> var filter_out = eval("/1|3/ig"); var myvar = "1 2 3"; alert(myvar.replace(filter_out, "-")); </script> // - 2 - 有人能解释一下为什么要加倍吗? 另外,我知道“g”代表全局-所有事件,“i”代表什么?不要使用e

我需要在所有实例中替换字符串中的两个不同字符,所以我找到了这个答案

<script type="text/javascript">
   var filter_out = eval("/1|3/ig");
   var myvar = "1 2 3";
   alert(myvar.replace(filter_out, "-"));
</script>

// - 2 -
有人能解释一下为什么要加倍吗? 另外,我知道“g”代表全局-所有事件,“i”代表什么?

不要使用eval,使用对象:

结果:
-2-


i
表示它将忽略大小写。

不要将您的
RegExp
放在引号内。然后您就不需要对它求值了。

如前所述,尽量避免在正则表达式中使用字符串。虽然它看起来更清晰(我个人喜欢查看RegExp,因为它更清晰),但使用速记符号/exp/switches时,您会遇到更少的问题

有三个(一个很少见到)开关可用于RegExp:

  • i:不理会这个案子
  • g:全局(多个匹配)
  • m:多行(有时对于有换行符的字符串是必需的)

  • 注意:对于此操作,根本不要使用eval()。事实上,您可能不应该在代码中的任何地方使用eval——我想我已经十年没有在JS中使用过它了。几乎总是不需要它(有些库在必要时会节约使用它)。

    这可能是相关的:TypeError:从另一个var过滤器构建一个RegExp时无法提供标志\u out=new RegExp(/\+\124;\-/,'ig');当我使用eval时,它看起来更干净,并且我可以在多个str中使用相同的filter_out变量。使用eval()有问题吗?编辑无所谓发现:stackoverflow.com/questions/9089532/why-does-eval-existy您可以简单地使用
    filter_out=/1|3/ig
    而不是
    filter_out=eval(“/1|3/ig”)
    。这就是eval所做的。如果您想要一个用变量初始化的正则表达式,可以使用
    filter\u out=new RegExp(pattern,modifiers)
    ——在这种情况下,pattern是
    1 | 3
    ,modifiers是
    ig
    <script type="text/javascript">
       var filter_out = eval("/\+|\-/ig");
       var myvar="+ 2 -";
       alert(myvar.replace(filter_out, "-"));
    </script>
    
    //SyntaxError: invalid quantifier: /+|-/ig
    
    var filter_out = eval("/\\+|\\-/ig");
    
    var myvar = '+ 2 -';
    alert(myvar.replace(/\+|\-/ig, '-'));