Javascript 为什么用正则表达式替换不起作用,即使正则表达式起作用?

Javascript 为什么用正则表达式替换不起作用,即使正则表达式起作用?,javascript,regex,string,Javascript,Regex,String,对此可能有一个非常简单的答案,可能是因为我熟悉(或可能缺乏)replace方法以及它如何与regex一起工作 假设我有以下字符串:abcdefHellowxyz 我只想去掉前六个字符和后四个字符,使用regex返回Hello。。。是的,我知道可能还有其他方法,但我正在尝试探索这些方法能够做什么的边界 不管怎么说,我已经修改了以下正则表达式: /^(.{6})。+(.{4})$/ 这似乎很好地通过了字符串,表明abcdef被捕获为组1,wxyz被捕获为组2。但当我尝试运行以下程序时: “abcde

对此可能有一个非常简单的答案,可能是因为我熟悉(或可能缺乏)replace方法以及它如何与regex一起工作

假设我有以下字符串:
abcdefHellowxyz

我只想去掉前六个字符和后四个字符,使用regex返回
Hello
。。。是的,我知道可能还有其他方法,但我正在尝试探索这些方法能够做什么的边界

不管怎么说,我已经修改了以下正则表达式:

/^(.{6})。+(.{4})$/

这似乎很好地通过了字符串,表明
abcdef
被捕获为组1,
wxyz
被捕获为组2。但当我尝试运行以下程序时:

“abcdefHellowxyz”。替换(/^(.{6})。+(.{4})$/,“”)

要用“”替换捕获的组,我将收到一个空字符串作为最终输出。。。我的语法有问题吗?如果是的话,如何纠正它,保持我原来的立场,希望以这种方式使用正则表达式


非常感谢大家提前…

您正在用以下代码行替换与
/^(.{6})。+(.{4})$/
匹配的任何子字符串:

"abcdefHellowxyz".replace(/^(.{6}).+(.{4})$/,"")
正则表达式匹配整个字符串
“abcdefHellowxyz”
;因此,整个字符串被替换。相反,如果严格按照无关子字符串的长度进行剥离,则可以使用or


编辑 您可能正在寻找的答案是捕获中间标记,而不是外部标记:

var str=“abcdefHellowxyz”;
var matches=str.match(/^.{6}(+.{4}$/);
str=匹配[1];//索引0是完全匹配的

console.log(str)您正在用以下代码行替换与
/^(.{6})。+(.{4})$/
匹配的任何子字符串:

"abcdefHellowxyz".replace(/^(.{6}).+(.{4})$/,"")
正则表达式匹配整个字符串
“abcdefHellowxyz”
;因此,整个字符串被替换。相反,如果严格按照无关子字符串的长度进行剥离,则可以使用or


编辑 您可能正在寻找的答案是捕获中间标记,而不是外部标记:

var str=“abcdefHellowxyz”;
var matches=str.match(/^.{6}(+.{4}$/);
str=匹配[1];//索引0是完全匹配的

console.log(str)下面的代码按照您的意愿运行

"abcdefHellowxyz".replace(/^.{6}(.+).{4}$/,"$1")
我认为只能使用
()
来捕获所需的文本,并且在
replace()
的第二个参数中,可以使用
$1
$2
。。。表示
group1
group2
。 您还可以将函数传递给
replace
的第二个参数,并将捕获的文本转换为此函数中所需的任何内容


如需了解更多详细信息,请按照@Akxe的建议,在上查找文档。

下面的代码可以按照您的意愿正常工作

"abcdefHellowxyz".replace(/^.{6}(.+).{4}$/,"$1")
我认为只能使用
()
来捕获所需的文本,并且在
replace()
的第二个参数中,可以使用
$1
$2
。。。表示
group1
group2
。 您还可以将函数传递给
replace
的第二个参数,并将捕获的文本转换为此函数中所需的任何内容


有关更多详细信息,如@Akxe推荐,您可以在上找到文档。

使用您想要的指南
“abcdefHellowxyz”。替换(/^(.{6})(.+)(.{4}$/,“$2”)
-因为这就是替换的工作原理。。。或者
“abcdefHellowxyz”.replace(/^.{6}(+).{4}$/,“$1”)
-因为你并不真的需要捕获丢弃的内容,所以可以作为你想要的指南使用
“abcdefHellowxyz”.replace(/^(.{6})(.+)(.{4}$/,“$2”)
-因为replace就是这样工作的。。。或者
“abcdefHellowxyz”.replace(/^.{6}(+).{4}$/,“$1”)
-因为您实际上不需要捕获丢弃的内容啊,这很有意义。。。所以换句话说,如果我想以类似的方式用正则表达式替换的话,它必须是。。。我猜是“abcdefHellowxyz”。替换(/^(.{6})/,“”)。替换(/(.{4})$/,“”)
。。。?刚刚测试过。。。这很有效。。。谢谢你把它清理干净。。。在这里,我想只有分组才会受到影响。。。我真傻。啊,这很有道理。。。所以换句话说,如果我想以类似的方式用正则表达式替换的话,它必须是。。。我猜是“abcdefHellowxyz”。替换(/^(.{6})/,“”)。替换(/(.{4})$/,“”)
。。。?刚刚测试过。。。这很有效。。。谢谢你把它清理干净。。。在这里,我想只有分组才会受到影响。。。我真傻,这会让代码更快。。。谢谢你们两位的帮助!这使得代码更快。。。谢谢你们两位的帮助!