Regex для нахождения допустимого имени файла

Если вы хотите написать все в нижнем регистре сразу после подчеркивания, то это будет работать для вас:

echo getFoo_Bar | gawk -F_ '{print tolower($2)}'
15
задан Rob Wells 23 June 2009 в 12:16
поделиться

3 ответа

Итак:

"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"

«Один или несколько символов, не относящихся ни к одному из этих, затем точка, затем еще несколько символов, которые не являются этими»

(Если вы уверены, что точка действительно нужна - в противном случае это просто: "[^ /? * :; {} \\] +"

17
ответ дан 1 December 2019 в 02:55
поделиться
$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');

^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.
6
ответ дан 1 December 2019 в 02:55
поделиться

Регулярное выражение будет выглядеть примерно так (для трехбуквенного расширения):

^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$

PHP нужно экранировать обратную косую черту, а preg_match () нужно экранировать косую черту, поэтому:

$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";

Чтобы сопоставить имена файлов вроде "hosts" или ". Htaccess" , используйте это слегка измененное выражение:

^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
2
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: