是否有更有效的方法来过滤正则表达式匹配字符串?

时间:2016-07-12 14:08:09

标签: regex

var s = '/home/src/_layouts/default.pug';// I wanna '_layouts/default'
var regex = /(src\/.*)/;
var m = s.match(regex);
var t = m[0].match(/([^(src\/)].*)(?=\..*$)/)[0];
console.log(t);// outputs "_layouts/default"

它有效但不够优雅,我想更有效率,任何人都可以帮助我?谢谢。

2 个答案:

答案 0 :(得分:1)

你所追求的正则表达式是/src\/([^.]*)\..+/

它将匹配src,然后捕获点之前的所有内容。 [^.]是一个否定的字符类(“匹配除了这些字符之外的所有内容”),这意味着它只获取文件名而不是扩展名。

答案 1 :(得分:0)

这个正则表达式怎么样:

src\/(.*)\.\w+

在Regex101上试用:https://regex101.com/r/bW2qS6/1

您的JS代码将是:

var s = '/home/src/_layouts/default.pug';
var t = s.match(/src\/(.*)\.\w+/)[1];
console.log(t);