当前位置:  开发笔记 > 前端 > 正文

在JSP EL中使用正则表达式

如何解决《在JSPEL中使用正则表达式》经验,为你挑选了3个好方法。

在jsp页面中使用的EL表达式中,字符串是字面意思的.例如,在以下代码段中


如果myvar的值为'prefixxxxx',则test不会计算为true.有没有人知道是否有办法将字符串解释为正则表达式?EL有类似于awk的波浪号〜运算符的东西吗?



1> erickson..:

虽然这个特殊情况可以使用JSTL fn:startsWith函数来处理,但正则表达式通常看起来很可能是测试.不幸的是,JSTL没有为这些功能提供功能.

从好的方面来说,编写一个能够满足您需求的EL功能非常容易.您需要功能实现和TLD,以便让您的Web应用程序知道在哪里找到它.将它们放在JAR中并将其放入WEB-INF/lib目录中.

这是一个大纲:

COM/X /标签库/核心/ 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:


  1.0
  x-c
  http://dev.x.com/taglib/core/1.0
  
    Test whether a string matches a regular expression.
    Matches
    matches
    com.x.taglib.core.Regexp
    boolean matches(java.lang.String, java.lang.CharSequence)
  

对不起,我没有测试这个特殊的功能,但我希望它足以指出你正确的方向.



2> 小智..:

只需将以下内容添加到WEB-INF/tags.tld即可




    Acme tags
    custom
    http://www.acme.com.au
    
        matches
        java.util.regex.Pattern
        
            boolean matches(java.lang.String, java.lang.CharSequence)
        
    

然后在你的jsp中

<%@taglib uri="http://www.acme.com.au" prefix="custom"%>
custom:matches('aaa.+', someVar) }

这将与Pattern.match完全相同



3> lucas..:

您可以像这样使用JSTL函数 -


看看:http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/fn/tld-summary.html

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有