<script language="javascript">
<!--
str ="sdfsad1'sdfsad2''asdfsad3''safs4'''sdff";re = /[^\'](\')[^\']/gvar a = str.match(re);
alert(a[0].charAt(1));
//-->
</script>

解决方案 »

  1.   

    ice_berg16(寻梦的稻草人) :
     大虾,能否告知偶原来的错在哪里啊?万分感谢~~
      

  2.   

    (?!\')是反向预查,只能用到你要匹配串的后面,所以你放前面是不对的。
    放后面倒是可以,变成这样
    re = /[^\'](\')(?!\')/g
    效果是一样的,
    至于*根本就不需要,中间不需要有其它字符,你已经判断过了
      

  3.   

    楼上说的很清楚了,csdn里面说
    (?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始  (?!\')没有见过放前面的哦