Php 如何使用正则表达式处理这种条件情况? 以字母数字开头^[a-z0-9] 然后后跟此可选点\? 如果有一个点,那么它后面必须有2到4个字母[a-z]{2,4} 它必须以字母表结尾[a-z]$ 它必须是一个点,最多只有两个点

Php 如何使用正则表达式处理这种条件情况? 以字母数字开头^[a-z0-9] 然后后跟此可选点\? 如果有一个点,那么它后面必须有2到4个字母[a-z]{2,4} 它必须以字母表结尾[a-z]$ 它必须是一个点,最多只有两个点,php,javascript,regex,perl,Php,Javascript,Regex,Perl,就像域名一样: yahoo.co.uk或yahoo.com,但您不能这样做yahoo.co.u或这样做yahoo.co.,是的,类似这样做。尝试以下方法: ^[a-z0-9](\.[a-z]{2,4}|.*[a-z]$) 您可以将可选点与必须在其后面的2-4个字符分组:(\.[a-z]{2,4})。也就是说,您要么没有,要么最多有两组点+字母字符(\.[a-z]{2,4}){0,2} 必须以[a-z]部分结尾,您可以使用正向查找(?检查以[a-z][0-9]开头的字符串,然后包含一个或两个点,

就像域名一样:

yahoo.co.uk
yahoo.com
,但您不能这样做
yahoo.co.u
或这样做
yahoo.co.
,是的,类似这样做。

尝试以下方法:

^[a-z0-9](\.[a-z]{2,4}|.*[a-z]$)

您可以将可选点与必须在其后面的2-4个字符分组:
(\.[a-z]{2,4})
。也就是说,您要么没有,要么最多有两组点+字母字符
(\.[a-z]{2,4}){0,2}


必须以
[a-z]
部分结尾,您可以使用正向查找
(?检查以
[a-z][0-9]
开头的字符串,然后包含一个或两个点,后跟2/4个字母。对于您提供的示例,它(至少在Python中)有效(适用于
yahoo.co.uk
yahoo.com
,适用于
yahoo.co.u
yahoo.co.

编辑-重新阅读后,我想您可能会想要以下内容:

^[a-z0-9]*([a-z0-9](\.[a-z]{2,4}){1,2}$|[a-z]$)

这将匹配不包含点但以字母结尾的字符串(除上述内容外),例如
yahoo
,但不匹配
yahoo2

您说的“它像域名”,但它是域名吗?因为如果是的话,我想知道Unicode的特性。它不是域名,但它就像域名#4-第一部分是否需要以[a-z]结尾,而不管是否有一个或多个\.[a-z]?
警报(/^[a-z0-9](\.[a-z]{2,4}.[a-z]$)/.test(“yahoo.co.u”))
结果为
。我希望
:(你在说什么?根据你的要求,“yahoo.co.u”应该通过:它以alpha(y)开头,后面没有点(a),以alpha结尾!另外,你已经用第5点修改了你的问题(仍然通过)。请删除否决票!OP特别声明
“yahoo.co.u”
不应该匹配。我认为只有在最初几分钟或编辑后,才能删除否决票。将你的答案更改为有用的答案,你可能会幸运。否决票不是来自Yoyo_c。它是我的。我通常只使用代码否决答案,因为我觉得它们没有用处,特别是在。但更重要的是,这是does不符合要求。“如果有一个点,那么它后面必须有2或4个字母[a-z]{2,4}”。这就是为什么“yahoo.co.u”不应该通过。您的正则表达式不带后视功能将允许。co.uk”感谢您的启发。否:“以字母数字开头”哦,对了-我不知怎么误读了你的评论。谢谢,应该会被修复!你的上一个方法是有效的,
if(preg\u match(/^[a-z0-9]*(\[a-z]{2,4}){1,2}$[a-z]$/”,“yahoo.com.au”))回显“ok”
打印出
ok
alert(/^[a-z0-9]*((\[a-z]{2,4}){1,2}{a-z]/.uk
结果是
正确的
。我已经在很多条件下进行了测试,到目前为止都很好。谢谢:)
^([a-z0-9]*[a-z]|[a-z0-9](+\.[a-z]{2,4}){1,2})$
^[a-z0-9](?=[^.]*\.[^.]+$|[^.]*\.[^.]\.[^.]+$)(\.(?=[a-z][a-z]){1,2}).*[a-z]$
^[a-z0-9]+(\.[a-z]{2,4}){1,2}$
^[a-z0-9]*([a-z0-9](\.[a-z]{2,4}){1,2}$|[a-z]$)