有效的Regex Specifict名称模式

时间:2019-02-18 15:50:52

标签: javascript node.js regex

我正在处理一个正则表达式以验证特定名称的模式,但到目前为止我没有任何结果,我使用的是javascript,其想法是将任何名称与该模式匹配:

screenshot1.png

它可能是screenshot0.png,screenshot3.png,screenshot99.png,但始终使用我正在使用的相同模式

^(screenshot[0-9].png*)$

但是如果我写screenshot9.pn(不带g),它将显示为有效字符串。

2 个答案:

答案 0 :(得分:2)

这将与您想要的匹配,也可以添加任何您想要的扩展名(png|jpeg|...),如果您需要任何.png jpeg,则为:\w*\.(png|jpeg)

const regex = /screenshot\d*\.(png|jpeg)/g;

const text = "dfgkdsfgaksjdfg screenshot541.png screenshot999991.jpeg"
const res = text.match(regex);

console.log(res)

答案 1 :(得分:1)

您亲近了,只需要删除*末尾并让正则表达式匹配screenshot单词后的一位以上并跳过dot,因为{ {1}}是一个特殊的元字符,将与almost any character相匹配:

dot (.)

此外,如果您想在某些文本上使用全局范围捕获所有模式,则可以使用正则表达式的const tests = ["screenshot09.png", "screenshot09.pn", "screenshoot.png", "screenshoot999apng"]; tests.forEach(x => console.log(/^(screenshot[0-9]+\.png)$/.test(x)));选项并删除ginitial (^)分隔符:< / p>

end ($)

请注意,您也可以用const test = "I have screenshot09.png and bad screenshot09.pn and screenshot with no number: screenshoot.png and this nice one screenshot123.png"; console.log(test.match(/(screenshot[0-9]+\.png)/g));替换模式[0-9]+