2015-07-27 2 views
0

Я хочу написать функцию XSLT, которая должна заменить все символы, кроме ниже:Как использовать оператор NOT (^) в шаблоне регулярных выражений 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> 

выглядит, не оператор (^) не работает как другие языки. Можете ли вы предложить мне, где я делаю неправильно? Как я могу достичь своей цели здесь?

Правильная функция ниже:

<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> 
+0

Почему '' 'добавлен и' & 'пропал без вести в вашей« правильной функции »? – nhahtdh

ответ

0

Поместите ^ внутри квадратных скобок replace($input_param,'[^a-zA-Z0-9_ * & . , #]',''), но вы также можете просто использовать translate($input_param, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9_ * & . , #', '').

+0

Спасибо @ Мартин. Это помогло мне в исправлении моей функции, и это сработало. Я обновил правильную функцию в своем вопросе. – user226817

Смежные вопросы