用于查找有效文件名的正则表达式
-
06-07-2019 - |
题
我想检查字符串是否是文件名(名称为DOT ext)。
文件名不能包含 /? * :; {} \
你能否建议我在preg_match()中使用正则表达式?
解决方案
你走了:
"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"
“一个或多个不属于这些字符的字符,然后是一个点,然后是一些不是这些字符的字符。”
(只要您确定该点确实是必需的 - 如果不是,则只需:" [^ /?*:; {} \\] +"
其他提示
$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');
^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.
正则表达式就像(对于三个字母的扩展名):
^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$
PHP需要反斜杠转义, preg_match()
需要转发斜杠转义,所以:
$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";
要匹配" hosts"
或" .htaccess"
等文件名,请使用此略微修改的表达式:
^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
在正则表达式下面用于检查Golang程序中的Unix文件名:
reg := regexp.MustCompile("^/[[:print:]]+(/[[:print:]]+)*<*>quot;)
不隶属于 StackOverflow