表达式: /\[color(\b=[\'\"]?([^\[]*))?\]/gi目标字符串: [color="#ff0033"]dfdsa[color=#336600']abc[/backcolor][/color]匹配结果:[color="#ff0033"]取出的 $2是 #ff0033",我想要的是去掉"的结果,即#ff0033.请有空的同学帮下忙.另:这个表达式严谨吗?请一并修正.

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html>
    <script>
    window.onload=function(){
    var re=/\[color(\b=[\s'"]+([^\['"]*)[\s'"]+)?\]/gi;
    var t=document.getElementById("ab").value;
    alert(re.exec(t))
    }
    </script>
    <textarea id="ab">[color= "#ff0033 "]dfdsa[color=#336600 ']abc[/backcolor][/color]</textarea>
    </html>
      

  2.   

    \[color(\s*?=\s*?[\'\"]?([^\[\]\"\']*?)[\'\"][^\[\]]*?)?\]
    这样就差不多了吧
      

  3.   


    \[color(\s*?=\s*?[\'\"]?([^\[\]\"\']*?)\s*?[\'\"][^\[\]]*?)?\]
      

  4.   

    \[(color(\b=[\'\"]?([^\[]*))?\]
    是要去掉双引号,单引号也要去掉.
    如以下写法,都要得到相同的结果:#ff0033
    [ color="#ff0033"]
    [ color='#ff0033']
    [ color=#ff0033"]
    [ color="#ff0033]
    [ color=#ff0033']
    [ color='#ff0033]
    [ color="#ff0033']
    [ color='#ff0033"]//以上均无空格
      

  5.   

    \[color(\s*?=\s*?[\'\"]?([^\[\]\"\']*?)\s*?[\'\"]?[^\[\]]*?)?\]