Регулярное выражение для поиска действительного имени файла Я хочу проверить, является ли строка именем файла (имя DOT ext) или нет. Имя файла не может содержать / ? * : ; { } \ Не могли бы вы предложить мне выражение регулярного выражения для использования в preg_match()? Ответ 1 Здесь вы идете: "[^/?*:;{}\\]+\\.[^/?*:;{}\\]+" "Один или несколько символов, которые не являются ни одним из этих, а затем точкой, а затем еще несколько символов, которые не являются этими". (Пока вы уверены, что точка действительно нужна - если нет, просто: "[^/?*:;{}\\]+" Ответ 2 $a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc'); ^ ... $ - begin and end of the string [^ ... ] - matches NOT the listed chars. Ответ 3 Регулярное выражение будет чем-то вроде (для трехбуквенного расширения): ^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$ PHP нуждается в обратных косых чертах, а preg_match() нужны перекодированные слэши, поэтому: $pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/"; Чтобы соответствовать именам файлов, например "hosts" или ".htaccess", используйте это слегка измененное выражение: ^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$ Ответ 4 Ниже регулярного выражения, используемого для проверки имени файла Unix в программе Golang: reg := regexp.MustCompile("^/[[:print:]]+(/[[:print:]]+)*$")
Ответ 1 Здесь вы идете: "[^/?*:;{}\\]+\\.[^/?*:;{}\\]+" "Один или несколько символов, которые не являются ни одним из этих, а затем точкой, а затем еще несколько символов, которые не являются этими". (Пока вы уверены, что точка действительно нужна - если нет, просто: "[^/?*:;{}\\]+"
Ответ 2 $a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc'); ^ ... $ - begin and end of the string [^ ... ] - matches NOT the listed chars.
Ответ 3 Регулярное выражение будет чем-то вроде (для трехбуквенного расширения): ^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$ PHP нуждается в обратных косых чертах, а preg_match() нужны перекодированные слэши, поэтому: $pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/"; Чтобы соответствовать именам файлов, например "hosts" или ".htaccess", используйте это слегка измененное выражение: ^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
Ответ 4 Ниже регулярного выражения, используемого для проверки имени файла Unix в программе Golang: reg := regexp.MustCompile("^/[[:print:]]+(/[[:print:]]+)*$")