我在看电子邮件验证.我在RFC规范中读到了连续的.(dot)不允许,例如mail..me @ server.com.
但是允许连续出现不同的狂野角色吗?例如,mail . $me @ server.com.
如果是这样,我如何制作一个正则表达式,只要它们不同,它们只会出现单个出现的野性字符?它不应该接受像.. && $$,但接受像,&$ .$ &.
而且由于允许使用大量野生字符,我不认为正如此等正则表达式\^(&&|$$|..)\不是一种选择.
我无法弄清楚我在哪里出错了.尝试验证电子邮件地址:
if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $emailREG)) {
Run Code Online (Sandbox Code Playgroud) 在所有具有在线表单的项目中,很多人必须输入他们的数据,令人惊讶的大量输入通过正则表达式验证但看起来像 foo@yaho.com、foo@gnail.com 或 foo@hotmial.com 的电子邮件地址 - 拼写错误在知名电子邮件提供商的域名中。
我们很想显示一个提示,例如“您写的是 foo@yaho.com,但您的意思不是 foo@yahoo.com?” .
当然,我们可以创建大量可能的拼写错误。
有没有更优雅的方式?一个能做到这一点的网络服务?代码片段?一个超酷的正则表达式?
我想要实现的是一个典型的用例:用户将他的电子邮件地址输入表单.将表单发送到我的应用程序后,应向用户发送带有随机生成链接的电子邮件,用户必须单击该电子邮件以确认其电子邮件地址.单击链接后,地址应在我的应用程序中标记为有效.
我的主要问题是:
谢谢 :-).
请不要低估这个问题,因为我正在寻找的答案不是某人应该追求的.我完全清楚这一点,但这不是我的想法,我只需要提供:D
在cakephp中,我的模型中有以下dataentry:
'email' => array(
'email' => array(
'rule' => array('email',false,'(^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$)')
),
)
Run Code Online (Sandbox Code Playgroud)
电子邮件规则是cakephp数据验证中的常用功能,第二个和第三个参数是可选的.第三个是正则表达式.我对给定的正则表达式字符串不满意所以我添加了自己的字符串.现在我要排除Gmail,Hotmail和yahoo地址.
如何更改正则表达式,以便这些地址产生错误?我说不对.
假设我有一个名字词典(一个巨大的CSV文件).我想从一个没有明显可解析点(., - ,_)的电子邮件中猜出一个名字.我想做这样的事情:
dict = ["sam", "joe", "john", "parker", "jane", "smith", "doe"]
word = "johnsmith"
x = 0
y = word.length-1
name_array = []
for i in x..y
match_me = word[x..i]
dict.each do |name|
if match_me == name
name_array << name
end
end
end
name_array
# => ["john"]
Run Code Online (Sandbox Code Playgroud)
不错,但我想要"约翰史密斯"或["约翰","史密斯"]
换句话说,我递归循环遍历单词(即未解析的电子邮件字符串,"johndoe@gmail.com"),直到我在字典中找到匹配项. 我知道:这非常低效. 如果有一个更简单的方法,我会全力以赴!
如果没有更好的方法,那么请告诉我如何解决上面的例子,因为它有两个主要缺陷:(1)如何设置循环的长度(参见下面找到"i"的问题), (2)如何在上面的例子中增加"x",以便我可以在给定任意字符串的情况下循环遍历所有可能的字符组合?
找到循环长度的问题,"i":
for an arbitrary word, how can we derive "i" given the pattern below?
for a (i = 1)
a
for ab (i = 3)
a …Run Code Online (Sandbox Code Playgroud) 我尝试过以下代码,但它给了我无与伦比的代码.
re:run("qw@qc.com", "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b").
Run Code Online (Sandbox Code Playgroud)
regexp我来到这里http://www.regular-expressions.info/email.html
编辑:下一步不起作用
re:run("345345", "\b[0-9]+\b").
Run Code Online (Sandbox Code Playgroud)
如果您在字符串中收到电子邮件,那么该字符串将匹配
re:run("qw@qc.com", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$").
Run Code Online (Sandbox Code Playgroud) 当我运行我的Doctrine Migration时,我收到以下错误:
迁移20141217162533在执行期间失败.错误运行时注意:只应通过引用传递变量
[Symfony\Component\Debug\Exception\ContextErrorException]运行时注意:只应通过引用传递变量
就$this->validateUsername行了.当我发表评论时,它运作正常.
这似乎是一个非常奇怪的运行时错误,我无法理解为什么我得到这个.
public function up(Schema $schema)
{
foreach ($this->old_users as $old_user) {
if ($this->validateUsername($old_user['email']) === false or $this->checkDNSRecord($old_user['email']) === false) {
$this->addSql("INSERT INTO User (email, joined_on, unsubscribed) VALUES ('" . $old_user['email'] . "', '" . $old_user['joined_on'] . "', 0)");
}
}
}
/**
* Validate the username/email address based on the structure (e.g. username@domain.com)
*
* @param $email
*
* @return bool
*/
public function validateUsername($email)
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// email is …Run Code Online (Sandbox Code Playgroud) 我创建了一个表格,您必须在其中插入电子邮件地址。
我已经有一种验证方法。但是我需要确保电子邮件确实存在。
可能吗?
我试过这么多npm包来验证邮箱地址和域名。这是我尝试过的一些 npm 包
email-check,
email-verify,
email-existence,
legit,
email-validator and,
email validation
Run Code Online (Sandbox Code Playgroud)
所有这些只会导致域名存在和其他一些检查。但我必须验证域中存在的特定电子邮件地址。我应该如何实现这一点...... 任何人都可以帮我找到它 提前谢谢!