我知道在使用Saxon时,XSLT不允许使用前瞻模式,但我需要知道如何在XSLT 2.0中使用这个正则表达式:
<xsl:if test='matches($value,"^(?!\s*$).{x,y}$")'>
在这里,x和y都是数字。请问有什么建议吗?
我知道在使用Saxon时,XSLT不允许使用前瞻模式,但我需要知道如何在XSLT 2.0中使用这个正则表达式:
<xsl:if test='matches($value,"^(?!\s*$).{x,y}$")'>
(?!X)
作为X,通过零宽度负向先行断言
,因此您应该能够使用标志;j'
在Saxon中启用它,如matches(string, '(?!subpattern1)subpattern2', ';j')
。Saxon允许您(http://saxonica.com/html/documentation/functions/fn/matches.html)使用该标志切换到Java正则表达式语言。
j
和n
,其中j
启用了Java平台支持的正则表达式语法,而n
则是.NET平台支持的(仅适用于Saxon的.NET版本)。因此,根据你使用的Saxon版本,请尝试检查平台的正则表达式格式是否支持该前瞻模式,并使用相应的标志来启用它。 - Martin Honnen