我想允许对一个已定义的字符类进行多次重复:]。
$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)
您可以在最后一个非捕获组(?:
中添加点,然后使用*
将该组作为一个整体重复0次或更多次
如果以+
开头或以组合的*
结尾的部分至少出现1次,则使用.
代替[._-]
^[a-z]+[a-z0-9._-]+[a-z]+@+[a-z0-9]+[._-]?+[a-z0-9]+(?:[._-][a-z0-9]{2,})+$