PHP preg_match:对一个字符类进行多次重复

问题描述 投票:0回答:1

我想允许对一个已定义的字符类进行多次重复:]。

$data = '[email protected]';
echo preg_match('/^[a-z]+[a-z0-9._-]+[a-z]+@+[a-z0-9]+[._-]?+[a-z0-9]+\.?+([a-z0-9]{2,})$/', strtolower($data)); // works (echo 1)

$data = '[email protected]';
echo preg_match('/^[a-z]+[a-z0-9._-]+[a-z]+@+[a-z0-9]+[._-]?+[a-z0-9]+\.?+([a-z0-9]{2,})$/', strtolower($data)); // doesn't work (echo 0, but should return 1)
php preg-match
1个回答
0
投票

您可以在最后一个非捕获组(?:中添加点,然后使用*将该组作为一个整体重复0次或更多次

如果以+开头或以组合的*结尾的部分至少出现1次,则使用.代替[._-]

^[a-z]+[a-z0-9._-]+[a-z]+@+[a-z0-9]+[._-]?+[a-z0-9]+(?:[._-][a-z0-9]{2,})+$                                      

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.