我想从Javascript中的图片网址中提取基本名称。有人会关心我的正手法吗?
规则是:
返回上一个/
.
的所有内容
www.domain.com/images/的 image.hires .JPG
如果未找到.
,则返回完整的基本名称
www.domain.com/images/image_hi_res
我有一个笨拙的/\/[^.]+\.[^.]+$/
,但不知道如何使/
和.
可选,以及如何仅查找最后.
。
一如既往地为所有伟大的投入欢呼。我选择了一个开箱即用的正则表达式。
答案 0 :(得分:27)
又一个解决方案:
url.replace(/^.*\/|\.[^.]*$/g, '')
答案 1 :(得分:12)
在这种情况下我实际上不会使用正则表达式,只是lastIndexOf
和substring
。像
function findBaseName(url) {
var fileName = url.substring(url.lastIndexOf('/') + 1);
var dot = fileName.lastIndexOf('.');
return dot == -1 ? fileName : fileName.substring(0, dot);
}
答案 2 :(得分:1)
试试这个正则表达式:
/([^/]+(?=\.[^/.]*$)|[^/.]+$)/
答案 3 :(得分:1)
在你的例子中,假设输入字符串是整个URL而已,我已经成功了
/\/[^\/]+(?=\.[^.]+$)|\/[^\/]+$/
首先尝试匹配从上一个/
到最后一个.
的所有内容;如果没有点,它将尝试匹配从最后/
到字符串结尾的所有内容。
领先/
包含在匹配中(JavaScript不支持lookbehind,否则我可以使用它),所以你需要砍掉匹配的第一个字符。
答案 4 :(得分:0)
如果您有权访问DOM,则可以使用HTMLHyperlinkElementUtils
代码的原生<a>
属性:
function urlInfo (url) {
var props = 'hash host hostname href origin password pathname port protocol username search';
if (!window.urlInfoAnchorElement)
window.urlInfoAnchorElement = document.createElement('a');
urlInfoAnchorElement.href = url;
return props.split(' ').reduce(function (m, v, i) {
m[v] = urlInfoAnchorElement[v]; return m;
}, {});
}
// Example:
urlInfo('http://localhost:4000/guidelines/7yQxvndK?get=sup&love=1#oiwjef');
/* => {
hash: "#oiwjef"
host: "localhost:4000"
hostname: "localhost"
href: "http://localhost:4000/guidelines/7yQxvndK?get=sup&love=1#oiwjef"
origin: "http://localhost:4000"
password: ""
pathname: "/guidelines/7yQxvndK"
port: "4000"
protocol: "http:"
search: "?get=sup&love=1"
} */
答案 5 :(得分:-2)
我建议使用FileSystemObject activex。当然,您需要在注册表中将其标记为安全,以便在没有唠叨屏幕的情况下执行它,但它非常有用。你的电话...... GetBaseName功能可以做你想要的。