Si bien este caso especial se puede manejar con la función JSTL fn:startsWith
, las expresiones regulares en general parecen como pruebas muy probables . Es desafortunado que JSTL no incluya una función para estos.
Por el lado positivo, es bastante fácil escribir una función EL que hace lo que quiere. Necesita la implementación de la función y un TLD para que su aplicación web sepa dónde encontrarla. Colóquelos en un JAR y suéltelos en su directorio WEB-INF/lib.
He aquí un bosquejo:
com/x/taglib/core/Regexp.java:
import java.util.regex.Pattern;
public class Regexp {
public static boolean matches(String pattern, CharSequence str) {
return Pattern.compile(pattern).matcher(str).matches();
}
}
META-INF/xc.tld:
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>x-c</short-name>
<uri>http://dev.x.com/taglib/core/1.0</uri>
<function>
<description>Test whether a string matches a regular expression.</description>
<display-name>Matches</display-name>
<name>matches</name>
<function-class>com.x.taglib.core.Regexp</function-class>
<function-signature>boolean matches(java.lang.String, java.lang.CharSequence)</function-signature>
</function>
</taglib>
En este momento, yo no 't probar esta función particular, pero espero que sea suficiente para apuntar en la dirección correcta.
Esto no responde a la pregunta de Op (y mi): _ "¿Alguien sabe si hay una manera de interpretar la cadena como una expresión regular en su lugar?" _ – Madbreaks