如何在 XSLT 的正则表达式模式中使用 NOT 运算符 (^)?
How to use NOT operator (^) in regular expression pattern of XSLT?
我想编写一个 XSLT 函数来替换除以下字符之外的所有字符:
0-9A-Za-z_ * & . , #
所以,我在下面的函数中写了一个正则表达式模式:
<xsl:function name="wd:allowed_characters">
<xsl:param name="input_param" />
<xsl:if test="$input_param !=' '" >
<xsl:value-of select="normalize-space(replace($input_param,'^[a-zA-Z0-9_ * & . , #]',''))" />
</xsl:if>
</xsl:function>
看起来,Not 运算符 (^) 不能像其他语言那样工作。
你能告诉我我哪里做错了吗?我怎样才能在这里实现我的目标?
正确的函数如下:
<xsl:function name="wd:allowed_characters">
<xsl:param name="input_param" />
<xsl:if test="$input_param !=' '" >
<xsl:value-of select="normalize-space(replace($input_param,'[^.#, \- _ * a-zA-Z0-9]',''))" />
</xsl:if>
</xsl:function>
把^
放在方括号replace($input_param,'[^a-zA-Z0-9_ * & . , #]','')
里面,也可以直接用translate($input_param, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9_ * & . , #', '')
.
我想编写一个 XSLT 函数来替换除以下字符之外的所有字符:
0-9A-Za-z_ * & . , #
所以,我在下面的函数中写了一个正则表达式模式:
<xsl:function name="wd:allowed_characters">
<xsl:param name="input_param" />
<xsl:if test="$input_param !=' '" >
<xsl:value-of select="normalize-space(replace($input_param,'^[a-zA-Z0-9_ * & . , #]',''))" />
</xsl:if>
</xsl:function>
看起来,Not 运算符 (^) 不能像其他语言那样工作。 你能告诉我我哪里做错了吗?我怎样才能在这里实现我的目标?
正确的函数如下:
<xsl:function name="wd:allowed_characters">
<xsl:param name="input_param" />
<xsl:if test="$input_param !=' '" >
<xsl:value-of select="normalize-space(replace($input_param,'[^.#, \- _ * a-zA-Z0-9]',''))" />
</xsl:if>
</xsl:function>
把^
放在方括号replace($input_param,'[^a-zA-Z0-9_ * & . , #]','')
里面,也可以直接用translate($input_param, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9_ * & . , #', '')
.