如何在clojure中验证电子邮件
我想使用clojure验证电子邮件。我该怎么做呢如何在clojure中验证电子邮件,clojure,clojurescript,Clojure,Clojurescript,我想使用clojure验证电子邮件。我该怎么做呢 (defn validate-email [email] ) 我想知道如何使用正则表达式编写函数体。下面是一个简单函数的示例,该函数将根据简单的regexp检查输入电子邮件字符串: (defn validate-email [email] (re-matches #".+\@.+\..+" email)) 如果输入与+\@.+\..+regexp匹配,则返回输入电子邮件,否则返回nil: (validate-email "foo
(defn validate-email [email]
)
我想知道如何使用正则表达式编写函数体。下面是一个简单函数的示例,该函数将根据简单的regexp检查输入
电子邮件
字符串:
(defn validate-email [email]
(re-matches #".+\@.+\..+" email))
如果输入与+\@.+\..+
regexp匹配,则返回输入电子邮件
,否则返回nil
:
(validate-email "foo@bar.baz") ;=> "foo@bar.baz"
(validate-email "invalid") ;=> nil
(if (validate-email "foo@bar.baz") :valid :invalid) ;=> :valid
(if (validate-email "invalid") :valid :invalid) ;=> :invalid
如果您需要一个好的regexp来匹配电子邮件,请参阅。下面是一个简单函数的示例,该函数将根据简单regexp检查输入
电子邮件
字符串:
(defn validate-email [email]
(re-matches #".+\@.+\..+" email))
如果输入与+\@.+\..+
regexp匹配,则返回输入电子邮件
,否则返回nil
:
(validate-email "foo@bar.baz") ;=> "foo@bar.baz"
(validate-email "invalid") ;=> nil
(if (validate-email "foo@bar.baz") :valid :invalid) ;=> :valid
(if (validate-email "invalid") :valid :invalid) ;=> :invalid
如果您需要一个好的regexp来匹配电子邮件,请参阅
对于Clojure中的正则表达式,这可能会有所帮助:
或者,可用于验证电子邮件,旁边 对于Clojure中的正则表达式,这可能会有所帮助:
或者,可以用来验证电子邮件,除此之外。请注意,使用正则表达式来标识“良好”或合法的电子邮件地址是出了名的难以正确获得的。存在许多容易被忽略的边缘情况。由于一些更为神秘的邮件路由方法已经不再使用,它变得容易多了,但它仍然很棘手 我的建议是使用类似的验证库,它可以用于客户端和服务器端,即clojure或clojurescript。它内置了对电子邮件验证的支持。还有许多其他lib也做了类似的事情
这会让你振作起来。您还可以查看源代码,了解解决此问题的一种方法。以后,一旦你有了更多的经验,你可以尝试自己做一些类似的事情(但更好:-)注意,使用正则表达式来识别“好的”或合法的电子邮件地址是众所周知的困难。存在许多容易被忽略的边缘情况。由于一些更为神秘的邮件路由方法已经不再使用,它变得容易多了,但它仍然很棘手 我的建议是使用类似的验证库,它可以用于客户端和服务器端,即clojure或clojurescript。它内置了对电子邮件验证的支持。还有许多其他LIB也做类似的事情
这会让你振作起来。您还可以查看源代码,了解解决此问题的一种方法。以后,一旦你有了更多的经验,你可以尝试自己做一些类似的事情(但更好:-)关于如何将电子邮件地址与正则表达式匹配,在SO和其他地方有很多讨论。在我看来,你要问的是如何在Clojure中使用正则表达式 读取器将
#“
识别为以”
结尾的文本正则表达式的开头。示例:#“(t)+”
您还可以使用从字符串编译正则表达式,以便动态创建正则表达式模式,如:(re pattern(str“^”my var“$”)
如果您试图使用正则表达式来匹配整个字符串,则可以使用。它返回
nil
(不匹配)、原始字符串(匹配)或[完整字符串,捕获-1,捕获-2,…]的向量
(re-matches #"abc" "abcdefg") ;; => nil
(re-matches #"abc.*" "abcdefg") ;; => "abcdefg"
(re-matches #"abc(.)(.*)" "abcdefg") ;; => ["abcdefg", "d", "efg"]
接受正则表达式和字符串并返回一个。您可以使用该方法获得下一个匹配,也可以使用Clojure的
如果您使用的是匹配器,则可以使用从最近的匹配中获取组
re-find
的另一个用法是使用正则表达式和字符串仅返回第一个匹配项:
(re-find #"[aeiou].[aeiou]" "alienate") ;; => "ali"
在许多情况下,您会发现使用re matcher
可以更方便地替代re-find
。它返回所有匹配项的惰性序列:
(re-seq #"[aeiou].[aeiou]" "alienate") ;; => ("ali", "ena"), lazily
最后,您可以搜索并替换为和。有助于解决正确转义字符这一恼人的问题。关于如何将电子邮件地址与正则表达式匹配,在SO和其他地方有很多讨论。在我看来,你要问的是如何在Clojure中使用正则表达式
读取器将#“
识别为以”
结尾的文本正则表达式的开头。示例:#“(t)+”
您还可以使用从字符串编译正则表达式,以便动态创建正则表达式模式,如:(re pattern(str“^”my var“$”)
如果您试图使用正则表达式来匹配整个字符串,则可以使用。它返回nil
(不匹配)、原始字符串(匹配)或[完整字符串,捕获-1,捕获-2,…]的向量
(re-matches #"abc" "abcdefg") ;; => nil
(re-matches #"abc.*" "abcdefg") ;; => "abcdefg"
(re-matches #"abc(.)(.*)" "abcdefg") ;; => ["abcdefg", "d", "efg"]
接受正则表达式和字符串并返回一个。您可以使用该方法获得下一个匹配,也可以使用Clojure的
如果您使用的是匹配器,则可以使用从最近的匹配中获取组
re-find
的另一个用法是使用正则表达式和字符串仅返回第一个匹配项:
(re-find #"[aeiou].[aeiou]" "alienate") ;; => "ali"
在许多情况下,您会发现使用re matcher
可以更方便地替代re-find
。它返回所有匹配项的惰性序列:
(re-seq #"[aeiou].[aeiou]" "alienate") ;; => ("ali", "ena"), lazily
最后,您可以搜索并替换为和。帮助解决正确转义字符的麻烦问题。Clojure
有一个非常有用的验证库,即valip
库
如果您查看谓词.clj
文件,您可以看到有电子邮件地址?
和有效电子邮件域?
功能,这些功能正是针对您的用户的。
因此,您可以按如下方式使用它
(定义验证电子邮件[e]