Php 这个正则表达式在寻找什么

Php 这个正则表达式在寻找什么,php,regex,preg-match,Php,Regex,Preg Match,从外观上看,我可以看到尾端是A-Z和0-9,但不确定是否是开始。因为“^”不是转义的,所以它可以是文字“^”或计算为not,而“.”(“and”)“也是如此。所以我只是有点困惑。在可选[]中包含内容是否意味着内容是文字化的?它只查找字符类中的一个字符。即,其中一项: 连字符减号、下划线、插入符号、百分比、符号、括号、点 大写拉丁字母 阿拉伯数字 ^仅在字符类最开始时解释为对字符类求反在字符类中完全失去了它的特殊意义。因此,是的,在字符类中,许多特殊的正则表达式字符是按字面意思使用的。除此之外

从外观上看,我可以看到尾端是A-Z和0-9,但不确定是否是开始。因为“^”不是转义的,所以它可以是文字“^”或计算为not,而“.”(“and”)“也是如此。所以我只是有点困惑。在可选[]中包含内容是否意味着内容是文字化的?

它只查找字符类中的一个字符。即,其中一项:

  • 连字符减号、下划线、插入符号、百分比、符号、括号、点
  • 大写拉丁字母
  • 阿拉伯数字
^
仅在字符类最开始时解释为对字符类求反
在字符类中完全失去了它的特殊意义。因此,是的,在字符类中,许多特殊的正则表达式字符是按字面意思使用的。除此之外,以下列表并不详尽:

  • 连字符减号(
    -
    )表示介于其他两个字符之间的范围(即不在开头或结尾)
  • 插入符号(
    ^
    )如上所述
  • 也可以使用预定义的字符类(例如
    \w
    ),它将与该类中的字符形成联合。因此,您的角色类可以缩短为
    [-^%&()。\w]

^
仅在
[]
中具有特殊含义,如果它是第一个字符。
-
仅在两个文字字符之间的
[]
中具有特殊含义。
[]
中没有特殊含义

只需阅读中的基本信息就可以告诉你这一切


正则表达式只匹配类中的一个字符。

这意味着如果$file=“.abc”,它也会查找该字符?嗯,这证实了我对这个正则表达式的怀疑。与我想要的完全相反。是的,在这种情况下它将匹配点,仅此而已。在字符集中,(即,[]括号集,)
^
不需要转义。它们的字面意思是,字符
^
^
仅当它是类中的第一个字符时才是字符类中的“非”,例如
[^a-Z]
(任何不是大写字母)v.s.
[a-Z^]
(大写字母和文字
^
)。
preg_match ("/[-_^%&().A-Z0-9]/", $file)