我知道正则表达式模式必须匹配一个字符串,该字符串以组合开头并重复以下字符:
a-zA-Za white-space character字符串的结束没有限制!
所以一个字符串如uoiui897868(任何只以空格开头的字符串a-z或者A-Z)匹配模式......(当然可以)
但问题是一个字符串76868678jugghjiuh(任何字符串只以空格以外的字符开头,a-z或者A-Z)匹配!这不应该发生!
我也检查过使用php函数preg_match(),返回true(即模式匹配字符串).还使用过其他在线工具,如regex101或regexr.com.字符串与模式匹配.任何人都可以帮助我理解为什么模式匹配第二种情况中描述的字符串?
/^[a-zA-Z ]*/
Run Code Online (Sandbox Code Playgroud)
你的正则表达式将匹配"以"开头的任何数字(包括零)字母或空格的字符串.
^表示"字符串的开头",*表示"零或更多".
双方uoiui897868并76868678jugghjiuh开始与0或多个字母/空间,所以它们都匹配.
你可能想要:
/^[a-zA-Z ]+/
Run Code Online (Sandbox Code Playgroud)
的+意思是"一个或多个",所以它不会匹配零个字符.
你的正则表达式是完全没用的:无论结构如何,它都会轻易地匹配任何字符串(空,非空,带数字,没有......).
这是因为
^,你强制执行字符串的开头,现在每个字符串都有一个开始.[A-Za-z ],但您使用*运算符,所以0或更多的重复.因此,即使字符串不包含(或以字符开头)[A-Za-z ],匹配器也会简单地说:零匹配并解析字符串的剩余部分.您需要使用+,而不是*来执行 "至少一个字符".