PHP preg_match: 多次重复一个字符 class
PHP preg_match: Multiple repetitions to one character class
我想允许对一个定义的字符进行多次重复 class :)。
$data = 'abc@abc-abc.abc';
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 = 'abc@abc-abc.abc.abc';
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,})+$
我想允许对一个定义的字符进行多次重复 class :)。
$data = 'abc@abc-abc.abc';
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 = 'abc@abc-abc.abc.abc';
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)
您可以在末尾添加非捕获组 (?:
内的点,然后使用 *
如果以 .
开头的部分或末尾的组合 [._-]
至少出现 1 次,则使用 +
而不是 *
^[a-z]+[a-z0-9._-]+[a-z]+@+[a-z0-9]+[._-]?+[a-z0-9]+(?:[._-][a-z0-9]{2,})+$