alt*_*alt 54 javascript regex string jquery
我有一个文件名,其中可以有多个点,可以以任何扩展名结尾:
tro.lo.lo.lo.lo.lo.png
Run Code Online (Sandbox Code Playgroud)
我需要使用正则表达式来替换最后一次出现的点与另一个字符串@2x,然后再次点(非常像视网膜图像文件名),即:
tro.lo.png -> tro.lo@2x.png
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的,但它不会匹配任何东西......
str = "http://example.com/image.png";
str.replace(/.([^.]*)$/, " @2x.");
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Jon*_*Jon 98
你不需要正则表达式.String.lastIndexOf会做.
var str = 'tro.lo.lo.lo.lo.lo.zip';
var i = str.lastIndexOf('.');
if (i != -1) {
str = str.substr(0, i) + "@2x" + str.substr(i);
}
Run Code Online (Sandbox Code Playgroud)
更新:正则表达式解决方案,只是为了它的乐趣:
str = str.replace(/\.(?=[^.]*$)/, "@2x.");
Run Code Online (Sandbox Code Playgroud)
匹配一个文字点,然后断言((?=)是正面的预测),直到字符串末尾的其他字符都不是一个点.替换应包括匹配的一个点,除非您要删除它.
Sal*_*n A 27
只需在替换字符串中使用特殊替换模式 $1:
console.log("tro.lo.lo.lo.lo.lo.png".replace(/\.([^.]+)$/, "@2x.$1"));
// "tro.lo.lo.lo.lo.lo@2x.png"Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用以下表达式\.([^.]*?):
str.replace(/\.([^.]*?)$/, "@2x.$1");
Run Code Online (Sandbox Code Playgroud)
您需要引用$1子组将该部分复制回结果字符串.
工作演示 http://jsfiddle.net/AbDyh/1/
码
var str = 'tro.lo.lo.lo.lo.lo.zip',
replacement = '@2x.';
str = str.replace(/.([^.]*)$/, replacement + '$1');
$('.test').html(str);
alert(str);
?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89437 次 |
| 最近记录: |