如何使用XSLT 2.0验证电子邮件地址?是否有预定义的方法或是否必须构建正则表达式?
由于
答案 0 :(得分:4)
您可以在XSLT 2.0中执行此操作,但您必须使用正则表达式(尽管编写实际上可以匹配所有可能的电子邮件地址的正则表达式是另一回事。)
在使用正则表达式的情况下,您可以使用匹配函数来检查字符串是否与电子邮件地址的正则表达式匹配(其中$ 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获得了此示例中的正则表达式。在这种情况下,它假设它是大写的,因此在我的例子中使用了该函数。
答案 1 :(得分:0)
是的,您可以在XSLT 2.0中使用XPath 2.0的match()函数来测试正则表达式的候选电子邮件地址。
但是,使用regular expressions to validate an email address是否是个好主意是另一个问题。请参阅引用的SO问题和候选正则表达式的答案,以及有关使用正则表达式验证电子邮件地址的限制的警告。