我想检查字符串是否是文件名(名称为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;)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top