我发现了一些类似的问题,但没有一个是干净的单行,我认为这应该是可能的。我想在特定字符的最后一个实例(在我的情况下为.
)中拆分一个字符串。
var img = $('body').attr('data-bg-img-url'); // the string http://sub.foo.com/img/my-img.jpg
var finalChar = img.split( img.split(/[.]+/).length-1 ); // returns int 3 in above string example
var dynamicRegex = '/[.$`finalChar`]/';
我知道我在这里违反了一些规则,想知道是否有人比我更聪明,知道将它们放在一起压缩它的正确方法吗?
编辑 - 此处的最终目标是将http://sub.foo.com/img/my-img
和.jpg
拆分并存储为单独的字符串。
答案 0 :(得分:3)
在正则表达式中,.*
是贪婪的,这意味着它将尽可能匹配。因此,如果您想匹配最后一个.
,则可以执行以下操作:
/^.*\./
从外观上看,您正在尝试获取文件扩展名,因此您需要添加捕获:
var result = /^.*\.(.*)$/.exec( str );
var extension = result[1];
对于这两个部分:
var result = /^(.*)\.(.*)$/.exec( str );
var path = result[1];
var extension = result[2];
答案 1 :(得分:0)
您可以对句点使用lastIndexOf()方法,然后使用substring方法获取第一个和第二个字符串。 split()方法最好用于要在所有实例中拆分的foreach场景中。对于这些类型的情况,子串是最好的,在这种情况下,您要破坏字符串的单个实例。