为什么我无法在没有正则表达式的情况下验证 PHP 中的域?
Oct 31, 2024 am 05:01 AMPHP域名验证
问题:如何不使用正则表达式验证 PHP 中的域名?
验证要求:
- 以字母或数字开头
- 可以包含字母、数字和连字符
- 以字母或数字结尾
- 长度在 1 到 253 个字符之间
- 每个标签的长度在 1 到 63 个字符之间
可能的答案:
不使用正则表达式进行域名验证是不可能的,因为需要检查多个规则和限制。
正则表达式模式:
/^[a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i
登录后复制
含义:
- ^ 和 $ 锚定字符串的开头和结尾。
- [a-zd] 匹配字母或数字。
- (-*[a-zd])* 匹配零个或多个由连字符分隔的字母或数字。
- . 匹配一个句点。
- {} 指定重复的次数。
示例代码:
<code class="php">function is_valid_domain_name($domain_name) { return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) //valid chars check &amp;&amp; preg_match("/^.{1,253}$/", $domain_name) //overall length check &amp;&amp; preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) ); //length of each label }</code>
登录后复制
测试用例:
域名 | 有效性 |
---|---|
a | Y |
0 | Y |
a.b | Y |
localhost | Y |
google.com | Y |
news.google.co.uk | Y |
xn--fsqu00a.xn--0zwm56d | Y |
goo gle.com | N |
google..com | N |
google.com | N |
google-.com | N |
.google.com | N |
<script | N |
alert( | N |
. | N |
.. | N |
N | |
- | N |
[] | N |
以上是为什么我无法在没有正则表达式的情况下验证 PHP 中的域?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)