正则表达式应该验证这样的单词a23-abcefghijk
<xsl:variable name="myRegex">
<xsl:value-of select="a\\d{2}\\-[a-zA-Z]+" />
</xsl:variable>
但我收到语法错误我尝试转义字符,但还没找到任何解决方案
答案 0 :(得分:1)
您的变量的值必须是一个字符串,因此您需要在select
...
<xsl:variable name="myRegex" select="'a\d{2}-[a-zA-Z]+'"/>
就像现在一样,处理器正在尝试将您的select
评估为XPath表达式。
另请注意,如果您使用的是XSLT 1.0,那么您将不得不使用extension function(以及支持它的处理器)。
这是一个2.0示例......
XML输入
<doc>
<test>a23-abcefghijk</test>
<test>qwerty</test>
</doc>
XSLT 2.0
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="myRegex" select="'a\d{2}-[a-zA-Z]+'"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="test">
<test matches="{if (matches(.,$myRegex)) then 'yes' else 'no'}">
<xsl:value-of select="."/>
</test>
</xsl:template>
</xsl:stylesheet>
XML输出
<doc>
<test matches="yes">a23-abcefghijk</test>
<test matches="no">qwerty</test>
</doc>
答案 1 :(得分:0)
<xsl:variable name="myRegex">
<xsl:value-of select="regExp:match('This is a test string', '(a\d{2}\-[a-zA-Z]+)', 'g'" />
</xsl:variable>