用Javascript正则表达式替换多个字符串?
我有一个字符串是这样做的:http://something.org/dom/My_happy_dog_%28is%29cool!” 如何删除所有初始域、多下划线和百分比内容 现在我只是在做一些多重替换,比如用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"," "); 继续说,但这真的很难看。。有什么帮助吗 谢谢 编辑: 确切的输入是“我的快乐狗很酷!”所以我想去掉最初的地址,去掉下划线和百分
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
页面中并进行测试?不客气,我很高兴能提供帮助!谢谢你的接受不客气,我很高兴能帮上忙!谢谢你的接受