Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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_Mongodb - Fatal编程技术网

Javascript从具有正斜杠的字符串中删除双引号

Javascript从具有正斜杠的字符串中删除双引号,javascript,mongodb,Javascript,Mongodb,我拥有的:我拥有以下字符串“/.\*n.*/” 我想要的:我想要从上面的字符串中删除双引号,看起来像/.\*n.*/ 我的尝试: var filter = "/.\*n.*/"; var modifiedFilter = filter.replace(/"/g, ""); 不知何故,这段代码不起作用。当我在调试模式下查看modifiedFilter时,它仍然显示带双引号的字符串。 是因为它是一个字符串变量,而调试值以双引号显示字符串吗 但如果是这样的话,那么我将这个变量传递给mongodb查

我拥有的:我拥有以下字符串
“/.\*n.*/”

我想要的:我想要从上面的字符串中删除双引号,看起来像
/.\*n.*/

我的尝试:

var filter = "/.\*n.*/";

var modifiedFilter = filter.replace(/"/g, "");
不知何故,这段代码不起作用。当我在调试模式下查看modifiedFilter时,它仍然显示带双引号的字符串。 是因为它是一个字符串变量,而调试值以双引号显示字符串吗

但如果是这样的话,那么我将这个变量传递给mongodb查询,并且由于双引号,该查询无法工作


我错过了什么

这里的问题要么是查询,要么是试图将字符串原语直接作为正则表达式处理。与其尝试删除(不存在的)语音标记,不如使用
RegExp
构造函数将其转换为正则表达式

var filter = "/.\*n.*/";
var modifiedFilter = new RegExp(filter).slice(1, -1);

字符串需要切片,因为
RegExp
构造函数接受没有
/
标记的正则表达式。

无法从
“/.\*n.*/”;
中删除
,因为它是创建字符串所必需的。只有在
“/.\*n./”,才可能*/";
表示字符串的实际值,在这种情况下,赋值应该类似于
var filter=''/.\*n.*/'
,这个问题对于回答者来说是有意义的

只需使用var modifiedFilter=filter.replace(/\“/g,”)

首先看一下在节点REPL上执行的以下语句

> s = "/.\*n.*/"
'/.*n.*/'
>
> s.replace(/'/g, '')
'/.*n.*/'
>
> s = "'/.\*n.*/'"
'\'/.*n.*/\''
>
> s.replace(/'/g, '')
'/.*n.*/'
>
现在看看下面的代码

var s = '"/.\*n.*/"'
var output = s.replace(/\"/g, "")
console.log(s) // "/.*n.*/" 
console.log(output) // /.*n.*/ 
//要在字符串中加引号,请按如下方式分配:
变量过滤器=“/。\*n.*/”;
//删除引号的代码是正确的。
var modifiedFilter=filter.replace(/“/g,”);
//验证代码是否有效

console.log(filter,modifiedFilter)
“然后我将此变量传递给mongodb查询,由于双引号,该查询无法工作”-那么您的查询就是问题所在。双引号实际上并不存在。它们只是表示“这是一个字符串”。@Andreas,我试着在Robo3T中运行查询,它似乎正在工作。但我会再检查一遍。感谢您的指针。如果引号确实存在,请将它们去掉,str=str.replace(/\“/g,”);一般来说,日志中的引号是用引号括起来的,就像其他人提到的字符串一样。您从mongodb中得到了什么错误,或者只是没有得到预期的结果?感谢您抽出时间回答问题。我会尝试让您知道您的答案是否有效。干杯!!@PeterB如果有效,请单击勾号?(这适用于任何一个答案,但您只能选择一个。)这将有助于抵消某些人不断给出的反对票。你几乎做对了。如果你要将字符串传递给regexp构造函数,请去掉周围的斜杠。它们是regex文本语法的一部分。如果你要传递它们,这将形成一个完全不同的表达式。哦,好吧。我一直忘记JavaScript的特性。”我想删除双引号…(一开始没有)被否决,为什么?给我一个理由,让我们讨论:)@LuckySoni:请看第一条评论。是的,这个答案的目的是准确地说明这一点。我回答了被问到的确切问题。谁知道带引号的实际数据来自哪里?可能数据源实际上发送了带双引号的数据,但询问者试图以JS不正确的方式复制该数据。因为他做了一个不正确的蠢事Igment语句,他认为他的代码不起作用。谁知道呢?输入数据中没有引号(
var filter=“/.\*n.*/”;
)。添加它们来证明你的答案并不会让它变得更好。这是正确的@Andreas,我只是建议,因为不可能删除
因为创建字符串是必需的,所以我误以为提问者忘记了。所以我补充说,但没有评论,因为已经有很多评论与此相关。我已经用澄清更新了我的答案。请看一看,谢谢你的提醒。@hygull:这篇文章回答了前面提到的问题,但不是很有用。当然,这里没有可移动的引号。虽然OP确实说了“删除引号”,但从他们的示例中可以明显看出,他真正想要的是将这个字符串转换成正则表达式。我不知道他为什么不这么说。也许他不知道正则表达式的概念。或存在字符串以外的类型。或者编程语言的一般工作方式(文本和它们的值之间的差异)。@hygull JFYI,不要用粗体修饰提及的内容。他们停止工作。使用常规自动补全功能,当您开始在
@
之后键入名称时,该功能将打开。好的,谢谢@Sergio。