注意:这是一个关于 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 hypenthe 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/