如何在jstl中使用正则表达式?

时间:2017-05-03 05:47:11

标签: java regex jsp jstl

我在tld文件中定义了一个函数。它运行良好。但是如果我想从jsp传递一个参数,那就显示错误了。它有什么问题?

 public static boolean matcheTelcom(CharSequence str) { 
    public static String regTelcom="^(((153|133)\\d{8})|((1704|1707)\\d{7}))$";
     return Pattern.compile(Constant.regTelcom).matcher(str).matches();
      }

现在,我想将其更改为:

public static boolean matches(String pattern, CharSequence str) {
        return Pattern.compile(pattern).matcher(str).matches();
      }

在jsp中,我这样传递:

 <c:if test="${mapping:matches('^(((153|133)\\d{8})|((1704|1707)\\d{7}))$',data.phone)}">  
     This is a phone
  </c:if>

错误显示:在引用的字符串中只有[],[']和[“]可以使用[]进行转义。

1 个答案:

答案 0 :(得分:2)

您应该使用\\\\d代替\\d

  

研究为什么你要使用四个\,因为在java语言中\   转移了意义。你应该使用\\表示\,同样也是   同样在正则表达式中。