str="$a$=1 and $b$=2";javascript 中一字符串 。现在想匹配到 $ 之外的内容 如:=1 and 和 =2
这两个部分

解决方案 »

  1.   

    lazy的方式把两个$及其中间部分替换为空应该可以
      

  2.   

    不知道这样是不是满意
    String str="$a$=1 and $b$=2";
    str = str.replaceAll("[$]{1}[^$]*[$]{1}", "");
    System.out.println(str);
      

  3.   

    split( /\$(a|b)\$/,maxLength )  //把一个字符串分割成字符串数组。
      

  4.   

    这个好像刚好匹配到$$ 之间的内容 的到的结果是 a 和 b 
    我想要的结果是 $$ 之间的内容以外的内容 如  =1 and 和 =2
      

  5.   


    您确定?怎么我的输出是:=1 and =2
      

  6.   

    str.replaceAll("\\$.*?\\$", "");这样ok?
      

  7.   

    我用的js
    str=str.replace(/[$]{1}[^$]*[$]{1}/g,'@')
    结果是 :
    @=1 and @=2
      

  8.   

    这样貌似还是匹配的 $$ 之间的内容 匹配到$a$ 里面的a 或b 我期望匹配$$之外的内容
      

  9.   


    String str="$a$=1 and $b$=2";
    Pattern p = Pattern.compile("(?<=\\$)=[^\\$]*");
    Matcher m = p.matcher(str);
    while(m.find()){
      System.out.println(m.group());
    }
      

  10.   

    这种方式 是直接把 $$ 之间的内容 覆盖了
    我期望的能够直接匹配到$$之外的内容 做一些其他操作
    如:
    str= str.replace(/这里是表达式/ig,function($0,$1,$2){

    if($1==xx){

    return 1
    }
    if($==yy){
    return 2
    }
    return "@";
    }
      

  11.   


    String res = "str=\"$a$=1 and $b$=2\"";//(?<=\\$)=[^\\$]*
    Pattern p = Pattern.compile("\\$(.*?)\\$(=[^\\$\"]*)");
    Matcher m = p.matcher(res);
    while (m.find()) {
    System.out.println(m.group(2));
    }
      

  12.   

    str=str.replace(/[$]{1}[^$]*[$]{1}/g,' ')
      

  13.   


    function run(){
        var str="$a$=1 and $b$=2";
        var reg = /[$]{1}[^$]*[$]{1}/;
        
        var str2 = str;
        var str3 = "";
        while(true){
          str3 = str2.replace(reg,"");
          if(str2 == str3){
            break;
          }
          str2 = str3;
        }
        
    alert(str);//原字符串
    alert(str2);//抽取出的字符串
    }
      

  14.   

    这个明显用 split 来做比较好啊, 再说js里面好像没replaceAll这个方法吧
      

  15.   

    LZ是想匹配还是想替换?var str="$a$=1 and $b$=2";
    var result = str.replace(/\$.*?\$(=.*?)/g, "$1");
    alert(result);结果是只留下 =1 and =2
    是这个意思吗?
    还是说吧把 =1 and =2 去掉,留下 $a$ $b$ ?
      

  16.   

    不知道LZ想得到什么结果?看看是不是这个意思?
    var str="$a$=1 and $b$=2";
    var r1 = str.replace(/\$.*?\$(=.*?)/g, "$1");
    var r2 = str.replace(/.*?(\$.*?\$)=\w*/g, "$1");
    alert(r1);
    alert(r2);
      

  17.   

    我的原始需求是 
    “$a$=1 and $b$=2”字符串中 $a$之间 可能有中文":"冒号 如$a:$ 
    $a$之外也可能有中文冒号 如$a$=1:1  我现在想把 $a$之外的中文冒号替换为英文(通常为用户输入的值)。$a$之间的冒号不替换(通常为定义的属性名 如“姓名:”)
      

  18.   

    for example
    var str="$a:$=1 and $b:$=2:2";
    var r1 = str.replace(/(.*?\$.*?\$=[^\s]*):(.*?)/g, "$1:$2");
    alert(r1);
      

  19.   


    var str="$a$=1 and $b$=2";console.log(str.replace(/(\$\w+\$)/g, ""));//output: =1 and =2
    console.log(str.split(/\$\w+\$/));//output: [ '', '=1 and ', '=2' ]
    不知是否合乎你意?