PHP 正则表达式 : a Pattern to Validate the Second Level Domain

标签 php regex

注意:这是一个关于 PHP 风格的正则表达式的理论问题,而不是关于 PHP 验证的实际问题。我只是使用域名,因为没有更好的例子。

“二级域名”是指位于 http://或 http://www. 和 .com 之间的字母、数字、句点符号和/或破折号的组合( .co、.info、.等)。

我只对使用英文版拉丁字母的二级域名感兴趣。

这种模式:

[A-Za-z0-9.-]+

匹配有效的域名,例如 stackoverflow、StackOverflow、stackoverflow.co(如 stackoverflow.co.uk)、stack-overflow 或 stackoverflow123。

但是,相同的模式也可以匹配 stack...overflow、stack---over--flow、 ........ 、 -------- 甚至 之类的内容。和 -。

如何重写该模式,以指示句号和破折号,即使它们可以在节点中多次使用,

  • 不能与其他符号一起使用,
  • 不能并排放置两次或以上,
  • 并且不能放在节点的开头或结尾?

提前谢谢您!

最佳答案

我认为这样的事情应该可以解决问题:

^([a-zA-Z0-9]+[.-])*[a-zA-Z0-9]+$

这试图做的是

start at the beginning of string, end at the end

one or more letter or digit
followed by either dot or hypen

the group above repeated 0 or more times

followed by one or more letter or digit

关于PHP 正则表达式 : a Pattern to Validate the Second Level Domain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878570/

相关文章:

javascript - 正则表达式 - 允许在单词开头使用大写字母

php - Eclipse PDT + 代码完成根本不起作用

php - 在 Windows 上启用跳过网络时,通过命名管道将 PHP/phpMyAdmin 连接到 MySQL/MariaDB

java - 如何正确分割非转义分隔符?

c# - 匹配字母数字和空格的正则表达式

javascript - 与冒号之间的正则表达式单词匹配(不包括冒号)

php - 用于 cronjobs 的 wget、curl 和 php

php - 解析XML : Get child nodes for each parent node

php - 检查数组中是否有多个值

javascript - float 的正则表达式