你不如直接用JS写算了。
一会13不匹配、一会15不匹配……,用JS判断几次也就可以了

解决方案 »

  1.   

    reg = /\d+(\.\d*)?/;
    不行吗?
      

  2.   

    不好意思,我的问题得得不清楚我在改一个语法加亮的HTC.如下面的
    _____________________________________________
        if (i mod 100000)=0 then frm_Form1.Progress:=20+Round(i/100000);
    _____________________________________________要匹配出
    100000,0,20,100000而frm_Form1中的Form不匹配.text = text.replace(/\d+(\.\d*)?/g,function($1){return "<font color=#FF0000>"+$1+"</font>"});
      

  3.   

    看看这里.
    http://www.chaoshan.com/lazyboy/delphi.htm改自mmkk的
    http://www.98xj1.com/users/mmkk/dhtml/FormatCsharpCodeByjs.html并修正了几个问题:
    1.加上行号
    2.加上字符串加亮(原来没有的)
    3.修正多个注释时把第一个注释开始,最后一个注释结束之间的内容当作是注释的内容.即:
      把/({[\S\s]*})/改为/({[\S\s][^}]*})/存在问题:
    1.如果遇到两个连续的单引号  '' ,会乱套了.(见上面的例子 132 行.)
    2.无法加这数值(非数字)
    3.....
      

  4.   

    <script>
    var str= "if (i mod 100000)=0 then frm_Form1.Progress:=20+Round(i/100000)";
    str = str.replace(/(?!\.)(-|\+)?\d+(\.\d+)?(?!\.)/g,function($1){return "<font color=#FF0000>"+$1+"</font>"});
    document.write(str)
    </script>
    有不少可能性.得再分析一下..
      

  5.   

    通过判断,数值有后面为
    空格,+,-,*,/,(,) 兄弟们帮忙测试一下吧<script>
    var str= "if (i mod 100000)=0 then frm_Form1.Progress:=20+Round(i/100000/100)";
    var re =/(-|\+)?\d+(\.\d+)?(?=[ |+|\-|*|\/|)|(])/g
    str = str.replace(re,function($1){return "<font color=#FF0000>"+$1+"</font>"});
    document.write(str)
    </script>
      

  6.   


    谢谢wanghr100(灰豆宝宝.net),我试过了,还是不行.
    新的结果
    http://www.chaoshan.com/lazyboy/delphi.htm我来分析情况,你看能不能实现:
    数值由三部分组成:数字开始(数字前面非字符,即以[空格,换行,操作符相连])
    中间可以有小数点{0,1}
    后面可以有数值{0,}
    不能以小数点结束.
    操作符=+-*/%&()=?<>[],空格,换行,跳格,这个问题不知如何解决.
    1.如果遇到两个连续的单引号  '' ,会乱套了.(见上面的例子 132 行.)正在努力学正则表达式....
      

  7.   

    re = /[\+\-\*\/\s]?\d+(\.\d+)?[\=\+\-\*\/%&\(\)\?<>\[\]\s]/g
    不知道行不行哦
      

  8.   

    改成这样子.//替换数值颜色
    text = text.replace(/\b(-|\+)?\d+(\.\d+)?(?=[\=\+\-\*\/%&\(\)\?<>\[\]\s;])/g,function($1){return "<font color=\"#FF0000\">"+$1+"</font>"});
    <script>
    var str= "TForm1 = class(TForm) if (i mod 100000)=0 then frm_Form1.Progress:=20+Round(i/100000/100) 1;2);";
    var re =/\b(-|\+)?\d+(\.\d+)?(?=[\=\+\-\*\/%&\(\)\?<>\[\]\s;])/g
    str = str.replace(re,function($1){return "<font color=#FF0000>"+$1+"</font>"});
    document.write(str)
    </script>
      

  9.   

    还是不行.晕哦.http://www.chaoshan.com/lazyboy/delphi.htm我把那些没有加亮的找出来:249   TComboBox(Control).Canvas.TextOut((Rect.Left), Rect.Top + 1, TComboBox(Control).Items[Index]);271   RichEdit1.SelLength := 0;
    273   RichEdit1.SelStart := length(RichEdit1.Text) - 1;
    288   if (Col > 0) and (Row > 0) then  第一个0没有,第二个0有,狂晕.
    289   StringGrid1.Hint := 'HEX:$' + IntToHex(Ord(TStringGrid(Sender).Cells[Col, Row][1]), 2);
    299   Application.MessageBox(Pchar('QQ多彩文本 V0.001' + #13 + #13  第一个没有,第二个有.
      

  10.   

    这个该怎么解决?这个问题不知如何解决.
    1.如果遇到两个连续的单引号  '' ,会乱套了.(见上面的例子 132 行.)
    两个文件打包:
    http://www.chaoshan.com/lazyboy/FormatPAS.rar如果要转贴,请说明改自
    改自mmkk的
    http://www.98xj1.com/users/mmkk/dhtml/FormatCsharpCodeByjs.html