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

用Javascript正则表达式替换多个字符串?

用Javascript正则表达式替换多个字符串?,javascript,replace,Javascript,Replace,我有一个字符串是这样做的:http://something.org/dom/My_happy_dog_%28is%29cool!” 如何删除所有初始域、多下划线和百分比内容 现在我只是在做一些多重替换,比如 str = str.replace("http://something.org/dom/",""); str = str.replace("_%28"," "); 继续说,但这真的很难看。。有什么帮助吗 谢谢 编辑: 确切的输入是“我的快乐狗很酷!”所以我想去掉最初的地址,去掉下划线和百分

我有一个字符串是这样做的:http://something.org/dom/My_happy_dog_%28is%29cool!”

如何删除所有初始域、多下划线和百分比内容

现在我只是在做一些多重替换,比如

str = str.replace("http://something.org/dom/","");
str = str.replace("_%28"," ");
继续说,但这真的很难看。。有什么帮助吗

谢谢

编辑:

确切的输入是“我的快乐狗很酷!”所以我想去掉最初的地址,去掉下划线和百分比,把空格放在正确的位置


问题是,试图在Chrome上使用正则表达式“出了问题”。这是Chrome或my regex的问题吗?

您可以使用
unescape
解码百分比:

str = unescape("http://something.org/dom/My_happy_dog_%28is%29cool!")
str = str.replace("http://something.org/dom/","");

您可以使用
unescape
对百分比进行解码:

str = unescape("http://something.org/dom/My_happy_dog_%28is%29cool!")
str = str.replace("http://something.org/dom/","");

也许你可以使用正则表达式来提取你需要的,而不是去掉你不想要的。你想保留什么

您还可以将它们链接在一起,如中所示:

str.replace("http://something.org/dom/", "").replace("something else", "");

也许你可以使用正则表达式来提取你需要的,而不是去掉你不想要的。你想保留什么

您还可以将它们链接在一起,如中所示:

str.replace("http://something.org/dom/", "").replace("something else", "");

你没有很准确地定义这个问题。要去除所有以
%
结尾的字符,您可以说

var re = /.*%\d\d/g;
var str = str.replace(re, "");

你没有很准确地定义这个问题。要去除所有以
%
结尾的字符,您可以说

var re = /.*%\d\d/g;
var str = str.replace(re, "");
我建议:

var str =  "http://something.org/dom/My_happy_dog_%28is%29cool!";
str.substring(str.lastIndexOf('/')+1).replace(/(_)|(%\d{2,})/g,' ');

我采用这种方法的原因是RegEx相当昂贵,并且常常很难微调到边缘情况变得不那么麻烦的程度;所以我选择使用简单的字符串操作来减少正则表达式的工作量

有效地,上面从
lastIndexOf(“/”)
的索引点(这完全符合您的预期)创建给定
str
变量的子字符串,并将
1
添加到该索引点,使子字符串从
/
之后的点开始,而不是在它之前

正则表达式:
()
匹配下划线,
仅用作
运算符,
(\d{2,})
用于匹配连续出现两次并跟随
%
符号的数字字符

围绕
|
的正则表达式每个部分的括号用于标识匹配组,这些组用于标识传递给
replace()
的第二个参数中哪些部分应替换为
'
(单空格)字符串

参考资料:

    • 我建议:

      var str =  "http://something.org/dom/My_happy_dog_%28is%29cool!";
      str.substring(str.lastIndexOf('/')+1).replace(/(_)|(%\d{2,})/g,' ');
      

      我采用这种方法的原因是RegEx相当昂贵,并且常常很难微调到边缘情况变得不那么麻烦的程度;所以我选择使用简单的字符串操作来减少正则表达式的工作量

      有效地,上面从
      lastIndexOf(“/”)
      的索引点(这完全符合您的预期)创建给定
      str
      变量的子字符串,并将
      1
      添加到该索引点,使子字符串从
      /
      之后的点开始,而不是在它之前

      正则表达式:
      ()
      匹配下划线,
      仅用作
      运算符,
      (\d{2,})
      用于匹配连续出现两次并跟随
      %
      符号的数字字符

      围绕
      |
      的正则表达式每个部分的括号用于标识匹配组,这些组用于标识传递给
      replace()
      的第二个参数中哪些部分应替换为
      '
      (单空格)字符串

      参考资料:


        • 好的,如果你想更换所有这些东西,我想你需要这样的东西:

          /(http:\/\/.*\.[a-z]{3}\/.*\/)|(\%[a-z0-9][a-z0-9])|_/g
          


          好的,如果你想替换所有这些东西,我想你需要这样的东西:

          /(http:\/\/.*\.[a-z]{3}\/.*\/)|(\%[a-z0-9][a-z0-9])|_/g
          


          您希望从给定的输入中得到什么输出?您希望从给定的输入中得到什么输出?的多个实例…?对不起,在问题结束前按enter键!下划线的多个实例?我已经在JSFIDLE ths正则表达式上进行了尝试:str.replace(/\ug/g,“”);它工作正常,但在Chrome上(在检查模式下)它不工作(“出了点问题”)。是Chrome有问题还是正则表达式有问题?我刚在Chrome检查器中试用过,效果很好。也许您可以尝试将代码保存在
          标签中的
          .html
          页面中,并测试它?多实例…?抱歉,在问题结束前按enter键!下划线的多个实例?我已经在JSFIDLE ths正则表达式上进行了尝试:str.replace(/\ug/g,“”);它工作正常,但在Chrome上(在检查模式下)它不工作(“出了点问题”)。是Chrome有问题还是正则表达式有问题?我刚在Chrome检查器中试用过,效果很好。也许您可以尝试将代码保存在
          标签中的
          .html
          页面中并进行测试?不客气,我很高兴能提供帮助!谢谢你的接受不客气,我很高兴能帮上忙!谢谢你的接受