2011-07-25 33 views
2
str = str.replace('?dfsdfsf=fdsfd.fdsfds/', 'uploads/') 

我想在URL中替换'?'到“/”之后(含)首次出现带“上传/”如何在Javascript中使用通配符替换

代替 https://websitename.com/?qqfile=somestrangefilename.jpguploads/d6113e4a-e789-44cd-8ba7-9684d29116dd.jpg

我想 https://websitename.com/uploads/d6113e4a-e789-44cd-8ba7-9684d29116dd.jpg

+0

你可以给任何例子,我的意思是什么ü想要的结果看起来像。 –

+0

您确定要使用javascript来做到这一点吗?做那个服务器端不是更有意义吗? – Eric

+0

@Eric,不,它不会更有意义,在我的情况下做服务器端 – eugeneK

回答

7

你可以使用正则表达式

str.replace(/\?[^\?\/]*\//, 'uploads/') 
+0

只需要注意一点:不需要在字符类中转义'?'。 – Qtax

+0

@Qtax,谢谢。而且它似乎也不需要在字符类中转义'/'。 –

+0

你这样做,因为你正在使用斜杠来引用正则表达式。 – Qtax

3

你需要使用正则表达式这一点。

尝试:

str = str.replace(/\?(.+)\//i, 'uploads/'); 

说明:

\?查找第?
(.+)查找任何数量的非换行符。
\/查找最后的/
/i告诉正则表达式不区分大小写,只是为了好的度量。

+3

,将取代一切,直到最后/,而不是第一个 –

+0

我的道歉。然而,OP的示例字符串只有一个'/',但我们会让他们决定这个答案是否正确。 – Bojangles

+0

-1表示错误答案,+1表示巨魔面孔。 ;-) – Qtax

2
var str = '?dfsdfsf=fdsfd.fdsfds/'; 
str = str.replace(/(\?[^\/]+\/)/, 'uploads/'); 

Check it live