对于域名注册,我想添加一些验证,以防万一有人想发疯并输入一些奇怪的域名。
这就是我现在所拥有的:
preg_match('/[^a-zA-Z0-9]/', $domain)
我想添加“ - ”但它不能是第一个或最后一个字符。 $ domain必须至少包含2个或更多字符。并且不能以“ - ”开头或结尾。
RegEx Gurus:任何想法如何让这个变得简单? 谢谢!
答案 0 :(得分:0)
不考虑非英文字母,您可以使用此正则表达式进行简单验证,以满足您的规则:
preg_match('/^\w[\w-]*\w$/', $domain)
这将:
\w
的第一个或最后一个字母与[a-zA-Z0-9_]
相同答案 1 :(得分:0)
从^
开始到$
结束:至少+
[a-z0-9]
之一*
(-[a-z0-9]+)
任意数量的[A-Z]
要使其与i
匹配,请添加^
(PCRE_CASELESS) modifier。要设置最小长度,可以在(?=.{2})
开始使用lookahead:$pattern = '/^(?=.{2})[a-z0-9]+(?:-[a-z0-9]+)*$/i';
检查,如果前面至少有2个字符。
(?:
{{1}}使用non-capturing group重复。