Javascript .replace()在控制台和实时环境中的功能不同

Javascript .replace() functioning differently in console vs. live

本文关键字:环境 功能 实时 replace 控制台 Javascript      更新时间:2023-09-26

我试图在Javascript文本变量上做一些基本的字符串操作。我有几行代码,看起来像这样:

var someVar = 'first+last@domain.com';
var cleanVar = someVar.replace('@','_').replace('+','_');

当我在Chrome的Javascript控制台运行此代码时,cleanVar的值是first_last_domain.com…这是我想要的。当这段代码在浏览器的活动页面上运行时,replace()总是适用于@字符,但从不适用于+

为了调试这个,我试着用.replace('+','_')交换.replace('@','_')的位置,甚至打破了这样的事情:

var someVar = 'first+last@domain.com';
var cleanVar = someVar.replace('@','_');
var cleanVar2 = cleanVar.replace('+','_');

我肯定错过了一些基本的东西。我知道+在Javascript中组合字符串…但不是用引号括起来的,对吧?

这个正则表达式方法为我工作:

var cleanVar = someVar.replace(/[+@]/g,'_');

(由某人早些时候发布,然后删除)

正如一位评论者所指出的,这将替换@+的所有实例。删除g,只针对第一个@+