Javascript 为什么用正则表达式替换不起作用,即使正则表达式起作用?
对此可能有一个非常简单的答案,可能是因为我熟悉(或可能缺乏)replace方法以及它如何与regex一起工作 假设我有以下字符串:Javascript 为什么用正则表达式替换不起作用,即使正则表达式起作用?,javascript,regex,string,Javascript,Regex,String,对此可能有一个非常简单的答案,可能是因为我熟悉(或可能缺乏)replace方法以及它如何与regex一起工作 假设我有以下字符串:abcdefHellowxyz 我只想去掉前六个字符和后四个字符,使用regex返回Hello。。。是的,我知道可能还有其他方法,但我正在尝试探索这些方法能够做什么的边界 不管怎么说,我已经修改了以下正则表达式: /^(.{6})。+(.{4})$/ 这似乎很好地通过了字符串,表明abcdef被捕获为组1,wxyz被捕获为组2。但当我尝试运行以下程序时: “abcde
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})$/,“”)
。。。?刚刚测试过。。。这很有效。。。谢谢你把它清理干净。。。在这里,我想只有分组才会受到影响。。。我真傻,这会让代码更快。。。谢谢你们两位的帮助!这使得代码更快。。。谢谢你们两位的帮助!