这个正则表达式用来校验URL:RegExp = new RegExp(/^http:\/\S+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/);在js里面直接这样写,就可以用,然后我在另外一个java文件中要实现相同的校验逻辑,要怎么写?我写成这样:String regxp = "^http:\\/\\S+\\.[A-Za-z0-9]+[\\/=\\?%\\-&_~`@[\\]\\':+!]*([^<>\"\"])*$";
Pattern urlPattern = Pattern.compile(regxp);
Matcher urlMatcher = urlPattern.matcher(value);
        if (urlMatcher.find()) {
            return true;
        }
可是提示出错:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 59
^http:\/\S+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>""])*$
要怎么写啊?
谢谢!!!

解决方案 »

  1.   

    在java中你那个改为如下格式:
    String str = "^http:\\/\\S+\\.[A-Za-z0-9]+[\\/=\\?%\\-&_~`@[\\]\\\':+!]*([^<>\\\"\\\"])*$";
    给你推荐一个新的:^((http|https|ftp|rtsp|mms):(//|\\\\){1}((([A-Za-z0-9_-:])+[.])|([A-Za-z0-9_-.:])+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*/)((\S)+[.]{1}(jpg|jpeg|gif|png|\S*?){1}))$校验例:
    import java.util.regex.*;// 表达式对象
    Pattern p = Pattern.compile("^((http|https|ftp|rtsp|mms):(//|\\\\\\\\){1}((([A-Za-z0-9_-:])+[.])|([A-Za-z0-9_-.:])+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(\\S*/)((\\S)+[.]{1}(jpg|jpeg|gif|png|\\S*?){1}))$");// 创建 Matcher 对象
    Matcher m = p.matcher("your string");// 是否完全匹配
    boolean yesorno = m.matches();
      

  2.   

    String pattern = "[_0-9a-zA-Z\\-]+";
      

  3.   

    ^http:\/\S+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$
    ---------------------------------------------------------------
    我测这个不好用,估计你这是有针对的特例
      

  4.   

    或者:
    String pattern = "[\\-\\w]+";
      

  5.   

    import java.util.regex.*;// 表达式对象
    Pattern p = Pattern.compile("^[\\w\\-]*$");// 创建 Matcher 对象
    Matcher m = p.matcher("your string");// 是否完全匹配
    boolean yesorno = m.matches();
      

  6.   

    ^\w$
    ^$看情况加
    -----------
    呵呵,没看清题,steedhorse(晨星)正解
      

  7.   

    to steedhorse(晨星):
    谢谢.我试了一下,为什么字符串"sdf_d043-!>"也返回true?
    我只需要字符"-"或"_"//String pattern = "[_0-9a-zA-Z\\-]+";
    String regxp = "[\\-\\w]+";
         Pattern urlPattern = Pattern.compile(regxp);
         Matcher urlMatcher = urlPattern.matcher("sdf_d043-!>");
    //     System.out.println("url value ::  "+value);
         System.out.println("result:  "+urlMatcher.find());
      

  8.   

    哦,你用Matcher,那最好加上:
    String regxp = "^[\\-\\w]+$";
      

  9.   

    我还以为你是用String.matches方法呢,不同的方面,由于使用方式不同,在“是否匹配整个串”这一点上的定义是不一样的。
    “Matcher.find”,“find”顾名思义,即发现字符串的一个匹配的部分就行。