这应该很容易,但由于某种原因,它不是。我正在尝试匹配模板文件的名称,该文件可以包含.-_
个字符,并始终以.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"]
任何想法如何解决这个问题?
答案 0 :(得分:1)
你的表达已经(有点)工作:当你在javascript中使用str.match(/regex/)
时,它返回一个由
在/(\w|\.|\-|\_)+.html/
您正在使用捕获组(...)
,结果中的第二项是捕获的值(此处为.html
之前的最后一个字母)。
您可以放弃除结果数组中第一项之外的所有内容,但由于您不需要首先捕获此值,因此您可以使用:
/[\w.-]+\.html/
最重要的是,一些评论:
[...]
(请注意元字符在那里不同)\w
是[0-9a-zA-Z_]
的快捷方式,无需手动添加下划线