将reg ex作为变量传入



我想通过一个变量传递一个正则表达式模式,即:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
xmlns:map="http://www.w3.org/2005/xpath-functions/map"
xmlns:array="http://www.w3.org/2005/xpath-functions/array"
exclude-result-prefixes="#all"
version="3.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="pattern" as="xs:string" select ="'[0-9]{4}'"/>
<xsl:variable name="caseSeries" >
<xsl:analyze-string select="'asdasd1980asdasd'" regex="$pattern">
<xsl:matching-substring>
<xsl:value-of select="."/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<result>
<areaCode> 
<xsl:value-of select="$caseSeries"/>
</areaCode>
</result>
</xsl:template>
</xsl:stylesheet>

但它与任何东西都不匹配,我试图避开花括号,但它不起作用。我计划使用if语句将适当的正则表达式放入变量中并应用该正则表达式,因此在某种程度上这是一个POC。

为变量添加大括号就可以了:

<xsl:analyze-string select="'asdasd1980asdasd'" regex="{$pattern}">

我更新了工作的链接

最新更新