String value = "add.jsp";
String str = "index.jsp,add.jsp,delete.jsp,update.jsp";
String[] array = str.split(",");
for(String i:array)
{
if(value.equals(i))
System.out.println("匹配的元素"+i);
}
考虑到效率问题以及字符串转数组稍微有点麻烦
请问如何用正则表达式来完成这种验证呢?

解决方案 »

  1.   


    String value = "add.jsp";
    String str = "index.jsp,add.jsp,delete.jsp,update.jsp"; Pattern p = Pattern.compile(value);
    Matcher m = p.matcher(str);
    if(m.find()) {
    System.out.println("匹配的元素" + m.group());
    }其实你那个就很不错的,正则表达式写起来简单,但是效率恐怕不高吧!
      

  2.   

    这样的话如果我的value="add.jsp,"//add.jsp后面加了一个逗号!也会匹配成功吧
    我的方法是根据分隔符先把它拆分成数组验证
    我希望根据分隔符来判断数据是否匹配的正则表达式要怎么写啊?
      

  3.   

    你如果只有当i完全相等于add.jsp就按你原先写的不就是啦,正则表达式的底层实现又如何,说必定没你的高。
      

  4.   


    看错啦  Pattern p = Pattern.compile(",add.jsp,");
            Matcher m = p.matcher(str);
            if(m.find()) {
                System.out.println("匹配的元素" + m.group());
            }
      

  5.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class TTT
    {
    public static void main(String[] args)
    {
    String value = "add.jsp";
    String str = "index.jsp,add.jsp,delete.jsp,update.jsp";
    Pattern p = Pattern.compile("\\w+\\.jsp");
    Matcher m = p.matcher(str);
    String[] array = new String[4];
    int i = 0;
    while (m.find())
    {
    array[i] = m.group();
    i++; }
    for (String s : array)
    {
    System.out.println(s);
    if (value.equals(s))
    {
    System.out.println("匹配的元素" + i); }
    } }
    }