这样可以,我也试过。但怎么提前面的java呢?象下面这样不行:
<script language="javascript">
var sToMatch="hello,java script";
var oRegExp=/(java)[^(script)]/;
alert(oRegExp.test(sToMatch)); //输出"true"
alert(RegExp.$1);//什么都不输出
</script>

解决方案 »

  1.   

    <script language="javascript">
    var sToMatch="hello,java script";
    var oRegExp=/(java)[^(script)]/;
    alert(oRegExp.exec(sToMatch)); //输出"true"
    alert(RegExp.$1);//什么都不输出
    </script>
      

  2.   

    var oRegExp=/(java)[^(script)]/;
    oRegExp.exec(sToMatch);
    alert(RegExp.$1);
      

  3.   

    Amwpfiqvy(给我分吧,让我升仙) 兄:实际上不是test()的问题<script language="javascript">
    var sToMatch="hello,java script";
    var oRegExp=/(java)[^(script)]/;
    oRegExp.test(sToMatch); //和 exec() 没关系
    alert(RegExp.$1);//输出 "java"
    </script>在第3句多了个alert,就不行了。如果是把结果赋值给一个变量,效果一样!<script language="javascript">
    1:var sToMatch="hello,java script";
    2:var oRegExp=/(java)[^(script)]/;
    3:alert(oRegExp.test(sToMatch)); //输出 "true"
    4:alert(RegExp.$1);//什么都不输出.
    </script>mingxuan3000(铭轩)兄的代码有同样的问题:<script language="javascript">
    var sToMatch="hello,java script";
    var oRegExp=/(java)[^(script)]/;
    alert(oRegExp.exec(sToMatch)); //输出"java ,java"
    alert(RegExp.$1);//什么都不输出
    </script>
    --------------------------------------------
    写完上面的用ie又试了一下,可以了(开始用firefox测的),晕!
    上面是我发现的问题,共享一下。
    另外 /(java)[^(script)]/ 的写法还是不行。<script language="javascript">
    var sToMatch="hello,javasscript"; //把空格换成 s ,我想看看是不是只比较了'script'第一个字符。
    var oRegExp=/(java)[^(script)]/;
    alert(oRegExp.test(sToMatch));//ie 里输出false
    alert(RegExp.$1);//什么都不输出
    </script><script language="javascript">
    var sToMatch="hello,javasscript"; 
    var oRegExp=/(java)[^(script)]/;
    oRegExp.test(sToMatch);//去掉alert的版本,结果一样
    alert(RegExp.$1);//什么都不输出
    </script>
      

  4.   

    var sToMatch="hello,javasscript";
    var oRegExp=/(java)[^(script)]*/;
    alert(oRegExp.test(sToMatch)); //输出"true"
    alert(RegExp.$1);//什么都不输出果然是这样,我这几天正在学比较高级点的正则,有什么资料没?
      

  5.   

    http://blog.csdn.net/watersugar/archive/2006/11/26/1415640.aspx
    像这样的,详细点的,要电子的,找了好多天
      

  6.   

    test和exec 是不同的方法啊。
    不然我也不用换你的方法啊?====
    有点不明白你问什么了……
      

  7.   

    alert(RegExp.$1);//什么都不输出
    我的意思是上面的结果“什么都不输出”和是不是用exec()没关系。用test()结果是一样的,把它换成exec()并不解决问题。
      

  8.   

    http://blog.csdn.net/deroshia/
    上面有你要的
      

  9.   

    java后面不跟script? 那就是说是空格或引号了/java['"\s>]/ 用这个试试 如果java后面还有其他东西就无法匹配了 例如 javabean javaxxx 等
      

  10.   

    PS:[^(script)]之所以不对 是因为它只是 不匹配 "s" "c" "r" "i" "p" "t"这六个字符 不是整个script串 例如: javac javar javai 等它都不会匹配
      

  11.   

    楼上的兄弟说得对,不过有一点需要补充下,[^(script)]这个不只是那6个字符,还有括号,这里的括号是不需要转意的。
    楼主还是具体说说为什么不用预查功能,也是因为版本的关系吗?预查功能需要版本是IE5.5以上
    不同语言的正则表达式方法和规则都不太一样,包括ultraedit都不一样,目前很多语言和软件都支持了,比如vbscript,js,java,oralce等
    在javascript中,
    test方法是返回true或者false,而exec方法则是:
    如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。exec 方法返回的数组有三个属性,分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。
      

  12.   

    /(java)(?!script)/这个就可以啊,test之后,预查的部分不会加到分组中,感觉有的时候挺好用的,换别的方法,感觉得看看具体情况。
      

  13.   

    有什么学习资料没?
    http://blog.csdn.net/watersugar/archive/2006/11/26/1415640.aspx
    像这样的,详细点的,要电子的,找了好多天
      

  14.   

    呵呵,如果不想用遇查的话可以...
    var p = /(java)(script)?/ig;
    while (p.exec(string))
        if (RegExp.$2 != "script")
            alert(RegExp.$1);
    这样就可以啦.就是麻烦点...
      

  15.   

    找下正则练习器吧,JS写的,挺好的,可以测试。记得笨狼的网站上有一个,如果没有的话,在google上找下,很多可以下的。
    to btbtd兄弟:
    需求很多是在身边,而没人去想,就拿我们自己来讲吧,我们经常写代码中差不多的方法,如果不能写成公用方法,可以输入几个变量,然后用正则自动匹配生成。至于“代码工”之类的,全是商业搞出来的,几个乱搞的家伙,为了自己的利益搞出来的。程序员还真有信的跟着一起讲的,晕倒,我一直不信印度是靠这样起来的,就算是这样也搞不长久。写程序就是为了方便人,连自己都不能方便那还... ...
      

  16.   

    gzdiablo兄:谢谢,我自己试出来了,不过还是谢谢。
    DeRoshia(知秋一叶):不错的文章。
    hbhbhbhbhb1021兄:不是不想用lookahead。只是现在在学习,想多几种方案。js的工具firefox有个插件就挺好用的。
    muxrwc兄的方法可以吧?可能除了lookahead外没什么好方法了吧?