我有以下正则表达式,我将其解释为匹配由字母数字字符和连字符组成的字符串的模式。
if (preg_match('/[A-Za-z0-9-]/', $subdomain) === false) {
// valid subdomain
}
问题是这个正则表达式也匹配空格,这在子域名中显然是不可取的。
对于奖励积分,这是验证子域名的合适方法吗?我不确定允许哪些特殊字符,但我认为只要允许连字符,我就会保持简单。还有什么我需要检查的吗?例如最大长度?
答案 0 :(得分:4)
您的模式匹配ASCII字母或数字或字符串内的<a href="#" data-tag="<?php echo implode(',', $project->tags()) ?>">Project</a>
任何地方,如果找到,则返回true。例如,如果你将-
传递给它,它将返回true。
与仅由字母数字字符和连字符组成的字符串匹配的模式是
$#$%$&^$g
<强>详情:
if (preg_match('/^[A-Za-z0-9-]+$/D', $subdomain)) {
// valid subdomain
}
- 字符串开头^
- 一个或多个字母,可以是ASCII字母,数字或[A-Za-z0-9-]+
-
- 字符串结尾$
- 一个PCRE_DOLLAR_ENDONLY修饰符,使/D
锚点匹配在字符串的最后(不包括字符串中最后一行换行符之前的位置)。