Javascript 第二个";后的正则表达式提取字符串&引用;字符串末尾的点字符

Javascript 第二个";后的正则表达式提取字符串&引用;字符串末尾的点字符,javascript,regex,string,Javascript,Regex,String,我想提取文件名的第二个“文件扩展名”,以便: /Users/path/my-path/super.lol.wtf/main.config.js 我需要的是: .config.js 如果我得到一个包含两个字符串的数组,那将是多么棒的事情: var output = ['main', '.config.js']; 我所尝试的: ^(\d+\.\d+\.) 但那是行不通的 谢谢以下是您需要的: (?:\/?(?:.*?\/)*)([^.]+)*\.([^.]+\.[^.]+)$ (?:表示

我想提取文件名的第二个“文件扩展名”,以便:

/Users/path/my-path/super.lol.wtf/main.config.js
我需要的是:

.config.js
如果我得到一个包含两个字符串的数组,那将是多么棒的事情:

var output = ['main', '.config.js'];
我所尝试的:

^(\d+\.\d+\.)
但那是行不通的

谢谢

以下是您需要的:

(?:\/?(?:.*?\/)*)([^.]+)*\.([^.]+\.[^.]+)$
  • (?:
    表示检测和忽略
  • [^.]+
    表示除
  • *?
    表示直到最后一次通过
    /

选中

您可以使用以下选项:

([^\/.\s]+)(\.[^\/\s]+)$
(?:.*\/|^)([^\/.\s]+)(\.[^\/\s]+)$
['main', '.config.js']
/Users/path/my-path/some.other.ext/main.config.js
some.other.ext/main.config.js
main.config.js

  • ([^\/.\s]+)
    -捕获组,不包括字符
    /
    以及任何空白字符一次或多次

  • (\..[^\/\s]+)
    -类似于上面的表达式;按字面意义捕获以
    字符开头的组;按字面意义排除字符
    /
    以及任何空白字符一次或多次

  • $
    -行尾


或者,您也可以使用以下选项:

([^\/.\s]+)(\.[^\/\s]+)$
(?:.*\/|^)([^\/.\s]+)(\.[^\/\s]+)$
['main', '.config.js']
/Users/path/my-path/some.other.ext/main.config.js
some.other.ext/main.config.js
main.config.js

  • (?:.*\/|^)
    -与上面的表达式相同,只是这将缩小匹配范围以减少步骤数。它是一个非捕获组,将匹配行首或
    /
    字符

第一个表达式较短,但第二个表达式具有更好的性能

这两个表达式将匹配以下内容:

([^\/.\s]+)(\.[^\/\s]+)$
(?:.*\/|^)([^\/.\s]+)(\.[^\/\s]+)$
['main', '.config.js']
/Users/path/my-path/some.other.ext/main.config.js
some.other.ext/main.config.js
main.config.js
在以下各方面:

([^\/.\s]+)(\.[^\/\s]+)$
(?:.*\/|^)([^\/.\s]+)(\.[^\/\s]+)$
['main', '.config.js']
/Users/path/my-path/some.other.ext/main.config.js
some.other.ext/main.config.js
main.config.js

工作非常完美,但如果我认为文件路径是相对的,那么仍然希望它能够工作,因此在字符串中没有“/”,比如:您希望从
hello.world/foo.bar.fizz.buzz
?或者
.htaccess
?是否也可以提取“config”?这完全是错误的awesome@randomKek是的,看-…如果你不想要“配置”从一个点开始,