Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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_Replace - Fatal编程技术网

Javascript 正则表达式范围内的逃逸点

Javascript 正则表达式范围内的逃逸点,javascript,regex,replace,Javascript,Regex,Replace,出于某种原因,这两个正则表达式的行为方式相同: "43\\gf..--.65".replace(/[^\d.-]/g, "");​ // 43..--.65 "43\\gf..--.65".replace(/[^\d\.-]/g, "");​ // 43..--.65 在第一个正则表达式中,我没有转义点(),而在第二个正则表达式中,我转义点(\。) 有什么不同,为什么他们的行为相同 因为点位于字符类内部(方括号[]) 看一看,它说(在char类部分下): 除了“^-]”之外的任何字符\将

出于某种原因,这两个正则表达式的行为方式相同:

"43\\gf..--.65".replace(/[^\d.-]/g, "");​  // 43..--.65
"43\\gf..--.65".replace(/[^\d\.-]/g, "");​  // 43..--.65

在第一个正则表达式中,我没有转义点(
),而在第二个正则表达式中,我转义点(
\。


有什么不同,为什么他们的行为相同

因为点位于字符类内部(方括号
[]

看一看,它说(在char类部分下):

除了“^-]”之外的任何字符\将该字符添加到可能的匹配项中 对于角色类


点运算符
不需要在字符类
[]

中转义,我发现:

请记住,点不是字符类中的元字符,因此不需要用反斜杠转义


因此,我想转义它是没有必要的…

如果您使用JavaScript测试正则表达式,请尝试
\.
而不是
\.


它以相同的方式作用,因为JS删除第一个反斜杠。

和减号(<代码> -/COD>)只需要在范围的中间才被转义。如果您想匹配连字符,在打开方块括号之后立即添加,例如[-AZ]。否则连字符指定范围。它在你的例子中起作用可能只是因为你没有在正则表达式中指定范围,但我建议你遵循引用,以防你稍后添加范围。或者在右括号之前,或者你可以用斜杠来逃避它。这个斜杠今天救了我。我不明白为什么这个表达式不起作用。谢谢