php - 解释正则表达式/^[a-zA-Z ]*/

标签 php regex string

我知道正则表达式模式必须匹配以以下字符的组合和重复开头的字符串:

  1. a-z
  2. A-Z
  3. 一个空白字符

并且对字符串的结尾方式没有限制!


第一个案例

所以像 uoiui897868 这样的字符串(任何只以空格、a-zA-Z 开头的字符串)匹配模式...(当然可以)

第二种情况

但问题是像 76868678jugghjiuh 这样的字符串(任何仅以空格、a-zA-Z 以外的字符开头的字符串)匹配也! 这不应该发生!


我也使用 php 函数 preg_match() 进行了检查,它返回 true(即模式与字符串匹配)。 还使用了其他在线工具,例如 regex101regexr.com。该字符串与模式匹配。 谁能帮我理解为什么模式与第二种情况中描述的字符串匹配?

最佳答案

/^[a-zA-Z ]*/

您的正则表达式将匹配“以”任何 个(包括零个)字母或空格“开头”的字符串。

^ 表示“字符串的开始”,* 表示“零个或多个”。

uoiui89786876868678jugghjiuh 都以 0 个或多个字母/空格开头,因此它们都匹配。

你可能想要:

/^[a-zA-Z ]+/

+ 表示“一个或多个”,因此它不会匹配零个字符。

关于php - 解释正则表达式/^[a-zA-Z ]*/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828526/

相关文章:

java - 在 Java 中通过正则表达式从字符串中删除不需要的字符

c# - 密码的按需正则表达式

javascript - 正则表达式查找最小可能的匹配

php字符串到int

javascript - 日期字符串格式

php - 用于警报功能的 php javascript 与字符串之间的连接

javascript - 使用 PHP 实现多个谷歌地图标记

java - java中匹配转义序列的正则表达式

php - 使用 xampp 安装 Apache 时出错

php - 防止直接 url 访问 php 文件