正则表达式在第二个"之后提取字符串。"字符串末尾的点字符

时间:2015-12-16 00:07:03

标签: javascript regex string

我想提取第二个"文件扩展名"文件名如此:

/Users/path/my-path/super.lol.wtf/main.config.js

我需要的是:

.config.js

如果我得到一个包含2个字符串的数组,那将是多么令人敬畏的事情:

var output = ['main', '.config.js'];

我尝试过:

^(\d+\.\d+\.)

但是那个工作。

由于

2 个答案:

答案 0 :(得分:6)

您可以使用以下内容:

([^\/.\s]+)(\.[^\/\s]+)$

Example Here

  • ([^\/.\s]+) - 从字面上捕获字符/.以及任何空格字符一次或多次。

  • (\.[^\/\s]+) - 与上述表达方式类似;从字面上开始捕获以.字符开头的组;从字面上排除字符/.以及任何空格字符一次或多次。

  • $ - 行尾

或者,您也可以使用以下内容:

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

Example Here

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

第一个表达式更短,但第二个表达式有更好的表现。

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

['main', '.config.js']

以下各项:

/Users/path/my-path/some.other.ext/main.config.js
some.other.ext/main.config.js
main.config.js

答案 1 :(得分:3)

以下是您的需求:

(?:\/?(?:.*?\/)*)([^.]+)*\.([^.]+\.[^.]+)$
  • (?:表示检测并忽略,
  • [^.]+表示除.
  • 之外的任何内容
  • .*?表示直到最后/

检查Here