gpt4 book ai didi

regex - Oracle Regexp_like 函数 : returning what failed

转载 作者:行者123 更新时间:2023-12-03 08:27:31 25 4
gpt4 key购买 nike

我有一个 oracle 函数,它返回电子邮件地址是否有效

CREATE OR REPLACE FUNCTION valid_email (p_email in varchar2)
return string is
v_return varchar2(255);
cemailregexp constant varchar2(1000) := '^[a-z0-9!#$%&''*+/=?^_`{|}~-]+(\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+([A-Z]{2}|arpa|biz|com|info|intww|name|net|org|pro|aero|asia|cat|coop|edu|gov|jobs|mil|mobi|museum|pro|tel|travel|post)$';

BEGIN
if regexp_like(p_email,cemailregexp,'i') then
v_return := p_email;
else
v_return := null;
end if;
return v_return;

END;

如果邮件通过正则表达式,则返回邮件,否则返回结果为NULL

我很想知道输入字符串的哪一部分失败了,为什么 regex_like 失败了?

如果不好就重新调整 null ,而不是重新调整 null ,也许是一个新的变量

我想发送电子邮件至 mgptva;d@uclin2.berkeley.edu 回复:

v_return_msg="无效字符';'在位置 7

很抱歉没有包括我的尝试,我什至不知道从哪里开始,谷歌搜索没有结果

最佳答案

正则表达式匹配或不匹配。这就是你从他们那里得到的一切。

电子邮件地址很复杂,很难使用正则表达式进行验证。如果您的核心业务不是构建电子邮件地址验证器,我建议不要再在这里浪费您的时间,而是继续前进。

非常赞同这篇文章Stop Validating Email Addresses With Regex我的规范电子邮件验证是:

create or replace function is_valid_email(p_email in varchar2) return number is
begin
return regexp_count(p_email, '^\S+@\S+\.\S+$');
end;

如果您想查看最先进的实现,请查看 Perl 的 Email::Valid模块。

关于regex - Oracle Regexp_like 函数 : returning what failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36924151/

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