正则表达式应该验证这样的话A23-abcefghijk正则表达式错误
<xsl:variable name="myRegex">
<xsl:value-of select="a\\d{2}\\-[a-zA-Z]+" />
</xsl:variable>
但我正在逐渐语法错误,我试图转义字符,但没有找到任何解决方案尚未
正则表达式应该验证这样的话A23-abcefghijk正则表达式错误
<xsl:variable name="myRegex">
<xsl:value-of select="a\\d{2}\\-[a-zA-Z]+" />
</xsl:variable>
但我正在逐渐语法错误,我试图转义字符,但没有找到任何解决方案尚未
您的变量的值必须是一个字符串,所以需要引用它的select
里面...
<xsl:variable name="myRegex" select="'a\d{2}-[a-zA-Z]+'"/>
像现在的凝固酶原ssor正试图将您的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>
<xsl:variable name="myRegex">
<xsl:value-of select="regExp:match('This is a test string', '(a\d{2}\-[a-zA-Z]+)', 'g'" />
</xsl:variable>
你尝试单引号和斜杠吗? ( ) –
我认为您使用双反斜杠是因为使用其他主机语言。在C或Java中,字符串文字中的反斜线需要转义为“\\”。 XML或XSLT中的情况并非如此,反斜杠没有特殊含义。 –