Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中的URL中查找基名称_Javascript_Regex - Fatal编程技术网

在Javascript中的URL中查找基名称

在Javascript中的URL中查找基名称,javascript,regex,Javascript,Regex,我想从Javascript中的图像URL中提取基本名称。有人能帮我弄一下正则表达式吗 规则是: 返回最后一个/左边的所有内容 www.domain.com/images/image.hires.jpg 如果未找到,请返回完整的基本名称 www.domain.com/images/image\u hi\u res 我有一个笨拙的/\/[^.]+\.[^.]+$/,但不知道如何使/和可选,以及如何仅查找最后一个 一如既往,为所有伟大的投入干杯。我选择了一个现成的正则表达式 请尝试以下正则表达式:

我想从Javascript中的图像URL中提取基本名称。有人能帮我弄一下正则表达式吗

规则是:

  • 返回最后一个
    /
    左边的所有内容

    www.domain.com/images/image.hires.jpg

  • 如果未找到
    ,请返回完整的基本名称 www.domain.com/images/image\u hi\u res

我有一个笨拙的
/\/[^.]+\.[^.]+$/
,但不知道如何使
/
可选,以及如何仅查找最后一个

一如既往,为所有伟大的投入干杯。我选择了一个现成的正则表达式


请尝试以下正则表达式:

/([^/]+(?=\.[^/.]*$)|[^/.]+$)/

在您的示例中,假设输入字符串是整个URL,仅此而已,我在

/\/[^\/]+(?=\.[^.]+$)|\/[^\/]+$/
首先尝试匹配从最后一个
/
到最后一个
的所有内容;如果没有点,它将尝试匹配从最后一个
/
到字符串末尾的所有内容


前导的
/
包含在匹配中(JavaScript不支持lookbehind,否则我可以使用它),因此您需要切掉匹配的第一个字符。

在这种情况下,我实际上不会使用正则表达式,而只需使用
lastIndexOf
子字符串。差不多

function findBaseName(url) {
    var fileName = url.substring(url.lastIndexOf('/') + 1);
    var dot = fileName.lastIndexOf('.');
    return dot == -1 ? fileName : fileName.substring(0, dot);
}
另一个解决方案:

url.replace(/^.*\/|\.[^.]*$/g, '')

我建议使用FileSystemObject activex。当然,您需要在注册表中将它标记为安全的,以便在没有nag屏幕的情况下执行它,但它非常有用。你的电话。。。GetBaseName函数执行您想要的操作。

当您有权访问DOM时,您可以使用
标记的本机
HTMLHyperlinkElementUtils
属性:

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"
} */

这将消除跨平台和跨浏览器的兼容性,但收益相对较小。@这仅适用于新的TLD如果您需要当前url,请使用上面的函数,如下所示:findBaseName(window.location.href);