Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式或其他方式检查电子邮件的字符串_Regex_Erlang_Email Validation - Fatal编程技术网

Regex 使用正则表达式或其他方式检查电子邮件的字符串

Regex 使用正则表达式或其他方式检查电子邮件的字符串,regex,erlang,email-validation,Regex,Erlang,Email Validation,我尝试了以下代码,但它给了我nomatch re:run("qw@qc.com", "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"). 我到这儿来了 编辑: 下一步不起作用 re:run("345345", "\b[0-9]+\b"). 如果你只收到了一封字符串形式的电子邮件,那么这封邮件什么时候会匹配 re:run("qw@qc.com", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$"). 看起来你需要一个

我尝试了以下代码,但它给了我nomatch

re:run("qw@qc.com", "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b").
我到这儿来了

编辑: 下一步不起作用

re:run("345345", "\b[0-9]+\b").
如果你只收到了一封字符串形式的电子邮件,那么这封邮件什么时候会匹配

re:run("qw@qc.com", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$").
看起来你需要一个不区分大小写的匹配

当前
[A-Z0-9.uz%+-]
(例如)仅匹配大写字符(加上数字等)

一种解决方案是指定
[A-Za-z]
。另一个解决方案是在匹配之前将您的电子邮件地址转换为大写。

看起来您需要不区分大小写的匹配

当前
[A-Z0-9.uz%+-]
(例如)仅匹配大写字符(加上数字等)


一种解决方案是指定
[A-Za-z]
。另一个解决方案是在匹配之前将您的电子邮件地址转换为大写。

我不太愿意回答这个问题,因为我认为它依赖于一个错误的假设,即您可以使用正则表达式确定电子邮件地址是否有效。有关更多详细信息,请参阅;简而言之,我注意到您问题中的regexp不接受和顶级域

也就是说,你需要避开反斜杠。您希望字符串包含反斜杠,但在Erlang中,反斜杠在字符串中用于转义各种字符,因此任何文字反斜杠都需要写成
\
。试试这个:

3> re:run("qw@qc.com", "\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b").
{match,[{0,9}]}
或者更好,这是:

8> re:run("qw@qc.com", "\\b[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\b").
{match,[{0,9}]}

这是regexp,修改为使用
\\b
而不是
^
$

我不太愿意回答这个问题,因为我认为它依赖于一个错误的假设,即您可以使用正则表达式确定电子邮件地址是否有效。有关更多详细信息,请参阅;简而言之,我注意到您问题中的regexp不接受和顶级域

也就是说,你需要避开反斜杠。您希望字符串包含反斜杠,但在Erlang中,反斜杠在字符串中用于转义各种字符,因此任何文字反斜杠都需要写成
\
。试试这个:

3> re:run("qw@qc.com", "\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b").
{match,[{0,9}]}
或者更好,这是:

8> re:run("qw@qc.com", "\\b[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\b").
{match,[{0,9}]}

这是regexp,修改为使用
\\b
而不是
^
$

''re:run('qw@qw.qw“,“\b[A-Za-z0-9.+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b”)-给我一个nomatch('re:run('qw@qw.qw“,“\b[A-Za-z0-9.\uz%+-]+@[A-Za-z0-9.-]+\[A-Za-z]{2,4}\b”)。”-给我一个nomatch((+1,但您仍然应该扩展它,以允许在localpart中使用例如
=
,并注意,在更棘手的情况下,任何使用正则表达式的尝试都将失败。将
-
添加到域part将至少允许国际化域名的punycode表示(当然,您应该完全放弃长度限制)。此外,您应该允许任意深度的子域—许多CCTLD甚至不允许只有两个部分的域名。+1但您仍然应该扩展此功能,以允许在localpart中使用例如
=
,并注意,在更棘手的情况下,任何使用正则表达式的尝试都将失败。将
-
添加到域部分至少会允许国际化域名的punycode表示(当然,你应该完全放弃长度限制)。此外,你应该允许任意深度的子域——许多CCTLD甚至不允许只有两部分的域名。