我是一个有正则表达式的总菜鸟,虽然我努力工作但我无法创建正确的正则表达式来执行以下操作:
?
”后跟数字位数不同的数字。 ?
”符号后面输入数字所以我们假设我们有这个网址:
http://website.com/avatars/avatar.png?56
我们选择“56
”并将其更改为“57
”。
我有以下正则表达式搜索,我不确定它是否合适:
\?[0-9]+
但我不知道如何将?
带走。我应该把它从字符串中扔掉而忘记在这里使用正则表达式吗?然后替换零件是唯一剩下的零件。
答案 0 :(得分:3)
试试这个:
var url = "http://website.com/avatars/avatar.png?56";
var match = url.match(/\?(\d+)/);
if(match != null) {
url = url.replace(match[1], "new number");
}
答案 1 :(得分:1)
你的原始正则表达式会正常工作,只需添加回?
就可以了:
var newnum = 57;
url = url.replace(/\?[0-9]+/, '?'+ newnum);
答案 2 :(得分:0)
非常 dummied-down方法:
$('#parse').click(function(e){
var fromUrl = $('#from-url').val();
var newNum = parseInt($('#new-number').val(), 10);
var urlRE = /(?!\?)(\d+)$/;
if (urlRE.test(fromUrl)){
$('#result').text(fromUrl.replace(urlRE, newNum));
}else{
$('#result').text('Invalid URL');
}
});
<强> DEMO 强>
没有奢侈的校验和,错误检查等。如果需要,请使用window.location
或包含URL的字符串。
进入函数(demo):
// Call this to replace the last digits with a new number within a url.
function replaceNumber(url, newNumber){
// regex to find (and replace) the numbers at the end.
var urlRE = /\?\d+$/;
// make sure the url end in a question mark (?) and
// any number of digits
if (urlRE.test(url)){
// replace the ?<number> with ?<newNumber>
return url.replace(urlRE, '?'+newNumber);
}
// invalid URL (per regex) just return same result
return url;
}
alert(replaceNumber('http://website.com/avatars/avatar.png?56', 57));
答案 3 :(得分:0)
答案 4 :(得分:0)
你可以在没有正则表达式的情况下做到这一点。
var newNum = "57";
var url = "http://website.com/avatars/avatar.png?56";
var sUrl = url.split('?');
var rUrl = sUrl[0] + "?" + newNum;
alert(rUrl);
?
?
和新号码重新组合在一起。