用于匹配模板名称的正则表达式

时间:2014-10-20 12:56:13

标签: regex match

这应该很容易,但由于某种原因,它不是。我正在尝试匹配模板文件的名称,该文件可以包含.-_个字符,并始终以.html结尾。有效的例子:

my-tem-plate.html
my.tem-plate.html
my_tem.plate.html

使用我目前的正则表达式:

/(\w|\.|\-|\_)+.html/

在带有文件名的路径上进行测试:

'/src/blabla/select-tab.tpl.html'

我在阵列中得到两个匹配而不是一个。

["select-tab.tpl.html", "l"]

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你的表达已经(有点)工作:当你在javascript中使用str.match(/regex/)时,它返回一个由

组成的数组
  • 整场比赛为第一项
  • 将捕获的值作为以下项目

/(\w|\.|\-|\_)+.html/您正在使用捕获组(...),结果中的第二项是捕获的值(此处为.html之前的最后一个字母)。

您可以放弃除结果数组中第一项之外的所有内容,但由于您不需要首先捕获此值,因此您可以使用:

/[\w.-]+\.html/

最重要的是,一些评论

  • 表示可以在一组字符中使用任何字符使用character class[...](请注意元字符在那里不同)
  • \w[0-9a-zA-Z_]的快捷方式,无需手动添加下划线