我知道正则表达式模式必须匹配以以下字符的组合和重复开头的字符串:
a-z
A-Z
一个空白字符
并且对字符串的结尾方式没有限制!
第一个案例
所以像 uoiui897868
这样的字符串(任何只以空格、a-z
或 A-Z
开头的字符串)匹配模式...(当然可以)
第二种情况
但问题是像 76868678jugghjiuh
这样的字符串(任何仅以空格、a-z
或 A-Z
以外的字符开头的字符串)匹配也! 这不应该发生!
我也使用 php 函数 preg_match()
进行了检查,它返回 true(即模式与字符串匹配)。
还使用了其他在线工具,例如 regex101
或 regexr.com
。该字符串与模式匹配。
谁能帮我理解为什么模式与第二种情况中描述的字符串匹配?
最佳答案
/^[a-zA-Z ]*/
您的正则表达式将匹配“以”任何 个(包括零个)字母或空格“开头”的字符串。
^
表示“字符串的开始”,*
表示“零个或多个”。
uoiui897868
和 76868678jugghjiuh
都以 0 个或多个字母/空格开头,因此它们都匹配。
你可能想要:
/^[a-zA-Z ]+/
+
表示“一个或多个”,因此它不会匹配零个字符。
关于php - 解释正则表达式/^[a-zA-Z ]*/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828526/