正则表达式:/^(\"{1}[^\\n\"<>]*\"{1})?(<{1}(((13[0-9]{1})|150|151|152|153|156|158|159)+\\d{8})>{1})$/
要匹配: "张三"<15911083030>我在JavaScript中可以匹配,在Java匹配中总是返回false,请大家帮忙看看哪错了。

解决方案 »

  1.   


    public static void main(String[] args) {
    String patternString = "(\"{1}[^\\n\" <>]*\"{1})?( <{1}(((13[0-9]{1})|150|151|152|153|156|158|159)+\\d{8})>{1})";
    String input = "\"张三\" <15911083030>";

    Pattern pattern = Pattern.compile(patternString);
    Matcher matcher = pattern.matcher(input); System.out.println(matcher.matches());
    }返回true呀
      

  2.   

    /^(\"{1}[^\\n\" <>]*\"{1})?( <{1}(((13[0-9]{1})|150|151|152|153|156|158|159)+\\d{8})>{1})$/开头的 /^ 和结尾的 $/ 是JS里用的正则起止符,你没去掉吧?
      

  3.   

    谢谢phyerbarte,去掉/^和$\之后返回true了。
    还有个问题字符串是 "张三"<15030303030>,"李四"<15030303030>,.... 请问正则表达式应该怎么写?
      

  4.   

    ^(\\"[^<]+\\"\\<15030303030\\>,)+$