gpt4 book ai didi

php - 字边界和字符串开头和字符串 anchor 结尾(正则表达式)有什么区别?

转载 作者:行者123 更新时间:2023-12-04 06:19:55 26 4
gpt4 key购买 nike

为什么在这个例子中两个正则表达式对电子邮件的评估不同?

http://codepad.viper-7.com/SEgMzZ

    <?php

$email = 'ΘΘΘme@gmail.com';
$regex = '#\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b#i';
$regex2 = '#^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$#i';


if (preg_match($regex, $email)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}


if (preg_match($regex2, $email)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
?>

编辑:我希望这两个都不匹配

最佳答案

问题出在你奇怪的 Θ字符(U0398 希腊大写字母 Theta)。 PHP 不会将它们视为单词的一部分,因此 ΘΘΘ 之间存在单词边界。和 me@... .

第一个正则表达式匹配,因为字符串的其余部分没问题。

第二个不匹配,因为那些 Θ不在第一个字符类中,因此您的字符串不匹配。

Wrikken指出,您可以使用 /u (PCRE8)正则表达式中的修饰符,使 PHP 将字符串视为 UTF-8。在这种情况下,Theta 字母不会引入单词边界,并且两个表达式都将无法匹配。

关于php - 字边界和字符串开头和字符串 anchor 结尾(正则表达式)有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6716321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com