我想知道一些关于PHP字符的内容,我相信我还没有完全理解。让我们从w3schools.com获取这段代码:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "name is required";
} else {
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$name = "";
$nameErr = "Only letters and white space allowed";
}
}
}
假设第三个“if”条件的右方括号旁边的星号不存在。换句话说,你不会有“零次或多次”,而只是“一次”。
我的问题是:
我无法在w3schools.com上测试它,因为观看者无法更改源代码。我使用在线正则表达式检查器http://www.regexr.comand - 当我输入代码“/([a-zA-Z])/”并对着字符串Jason进行测试时,所有字符都匹配!情况并非如此。我应该得到一个假的。
答案 0 :(得分:1)
如果您删除了^
和$
标记,则您的规则会说“在某个地方有一封信”。 Jason
符合这一点。
答案 1 :(得分:1)
^
标记表示“字符串的开头”,$
表示“字符串的结尾”。
删除星号表示“Jason”不匹配,但“J”将匹配。
您可以在PHP manual中找到PCRE正则表达式模式的参考。
如果您无法在本地运行代码进行测试,您仍然可以在PHP Fiddle中运行代码段。我建议你玩example patterns in the manual。