0

如何使用 XSLT 2.0 验证电子邮件地址?是否有预定义的方法或者我必须构建一个正则表达式?

谢谢

4

2 回答 2

6

您可以在 XSLT 2.0 中执行此操作,但您必须使用正则表达式(尽管编写一个实际上可以匹配所有可能的电子邮件地址的正则表达式是另一回事)。

在使用正则表达式的情况下,您将使用matches函数来检查字符串是否与电子邮件地址的正则表达式匹配(其中 $email 是包含要验证的字符串的变量。或者您可以使用包含电子邮件的元素名称地址)。

<xsl:if test="matches(upper-case($email),'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$')">
   Valid
</xsl:if>

查看http://www.xml.com/pub/a/2003/06/04/tr.html以获取有关正则表达式的信息。

请注意,我从http://www.regular-expressions.info/email.html获得了此示例中的正则表达式。在这种情况下,它假定它是大写的,因此在我的示例中使用了该函数。

于 2013-10-11T13:46:14.517 回答
0

是的,您可以在 XSLT 2.0 中使用 XPath 2.0 的match()函数来根据正则表达式测试候选电子邮件地址。

但是,使用正则表达式验证电子邮件地址是否是一个好主意是另一个问题。请参阅引用的 SO 问题和答案以获取候选正则表达式,以及有关使用正则表达式验证电子邮件地址的一般限制的警告。

于 2013-10-11T13:43:24.807 回答