Я не могу на всю жизнь понять, как заставить их соответствовать:
File name without 3 digit end.jpg
File name with 3 digit 123.gif
Single 123.jpg
Single.png
Но не это:
Single 1.jpg
Single 123b.gif
More words 123b.png
Лучшее, что я мог до сих пор, это выражение:
^[^\s]((?!\s{2})(?!,\S).)*\b(\p{L}+|\d{3})\.\w{3}$
Но он не соответствует Single.png
и все еще соответствует Single 123b.gif
и More words 123b.png
.
Я думаю, что понимаю, почему это не работает, но я не могу понять, как сделать это правильно, и я боролся и гуглил в течение 2 дней.
Мои полные правила: опционально ровно 3 цифры в конце перед расширением файла, трехбуквенное расширение файла, без двойных пробелов в имени файла и один пробел после, но не перед запятой.