我想匹配文件名中的单词,但不包含下划线(_)和文件扩展名之类的字符。例如,如果我有image_one.jpg和image_two.png文件,那我怎么只能匹配image one
和image two
?我不确定如何排除下划线和.extension。
到目前为止,我有,\w*_\w*
但是它与包括下划线的文件名匹配,即image_one
和image_two
您的模式\w*_\w*
也可能与单个_
字符匹配,因为字符char是可选的。
由于\w
还下划线相匹配,可以从排除\w
通过使用否定的字符类。[^\W_]
。
要获得两个值,可以使用2个捕获组,如果模式必须仅在字符串的末尾匹配,则可以$
在末尾添加。
([^\W_]+)_([^\W_]+)\.\w+
说明
([^\W_]+)
捕获组1,将一个字符char匹配1次以上,但 _
_
匹配下划线([^\W_]+)
捕获组2,与组1相同\.\w+
匹配a.
和1+单词字符(或\.(?:jpg|png)
更准确地说)观看正则表达式演示
const regex = /([^\W_]+)_([^\W_]+)\.\w+/;
[
"image_one.jpg",
"image_two.png"
].forEach(s => console.log(s.match(regex).slice(1)));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句