我正在处理一个正则表达式以验证特定名称的模式,但到目前为止我没有任何结果,我使用的是javascript,其想法是将任何名称与该模式匹配:
screenshot1.png
它可能是screenshot0.png,screenshot3.png,screenshot99.png,但始终使用我正在使用的相同模式
^(screenshot[0-9].png*)$
但是如果我写screenshot9.pn(不带g),它将显示为有效字符串。
答案 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)));
选项并删除g
和initial (^)
分隔符:< / 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]+
。