我想从电子邮件中删除+符号,请帮我编写一个不接受电子邮件中的+符号的正则表达式。
abc@xyz.com - valid email
abc123@xyz.com - valid email
abc.def@xyz.com - valid email
abc+123@xyz.com - Invalid email
答案 0 :(得分:3)
根据我的评论,您可以使用
^[^@+]+@\S+$
# start of line, anything not + or @ 1+ times, followed by @,
# not whitespaces and the end of the string
使用例如~
作为分隔符并查看a demo on regex101.com - 问题是:为什么? +
完全有效。
答案 1 :(得分:2)
正则表达式:^[^@+]+@[^@]+$
在[^@+]
中添加不需要的字符。
详细说明:
^
在行的开头断言位置[^]
匹配列表中不存在的单个字符+
匹配一次且无限次$
断言位于行尾的位置PHP代码:
$strings=['abc@xyz.com','abc123@xyz.com','abc.def@xyz.com','abc+123@xyz.com'];
foreach($strings as $string){
$match = preg_match('~^[^@+]+@[^@]+$~', $string);
echo ($string . ' ' . ($match ? 'true' : 'false')."\n");
}
输出:
abc@xyz.com true
abc123@xyz.com true
abc.def@xyz.com true
abc+123@xyz.com false
答案 2 :(得分:1)
Plus符号是有效的电子邮件字符。
您标记了此php
。您不应该使用正则表达式在PHP中进行电子邮件验证。您应该使用filter_var()
示例:
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);