<script type="text/javascript">
var a="a___ ___ ___b"
var b="a___ ___b"
if(/___ ___ ___/.test(a)){
alert("ok")
}else{
alert("err")
}
if(/___ ___ ___/.test(b)){
alert("ok")
}else{
alert("err")
}
var aa="a___"
var bb="a__b"
var cc="a__b_"
if(/___/.test(aa)){
alert("ok")
}else{
alert("err")
}
if(/___/.test(bb)){
alert("ok")
}else{
alert("err")
}
if(/___/.test(cc)){
alert("ok")
}else{
alert("err")
}
</script>

解决方案 »

  1.   

    function _0009(str)
    {
        return /^[^_]*(?:_{3}[^_]*){3}$/.test(str);
    }alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
      

  2.   

    不知道楼主的意思是不是单个不要超过三个,也不要少于三个,如果是那样的话,可以使用
    <script language=javascript>
    function _0009(str)
    {
    return (str.replace(/___/g,"").indexOf("_")==-1)
    }alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
    </script>
      

  3.   

    function _0009(str)
    {
        return /(____+?)|(_+?___)|(((?<=[^_])|^)_{1,2}((?=[^_]+?)|$))/.test(str);
    }alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
    格式我不知道对不对,我不懂jsp。
      

  4.   

    在c#下可以。莫非.net中的regex和jsp的不同?
      

  5.   

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ※以下是引用17楼 wuyazhe(经常答错,欢迎指正。) 在2007-07-21 10:01:22 的发言:
    ──────────────────────────────────────────
    function _0009(str)
    {
        return /(____+?)|(_+?___)|(((?<=[^_])|^)_{1,2}((?=[^_]+?)|$))/.test(str);
    }
    alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
    格式我不知道对不对,我不懂jsp。
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    这是JAVASCRIPT你写的正则逻辑好乱. ____+?和_+?___在逻辑上讲得通吗?另外JS不支持负向声明,?<=是不能用的.其实这个正则并不难,只是楼主没有表达清楚.我也不知道他真正想要的是什么!
      

  6.   

    hbhbhbhbhb1021(天外水火(我要多努力)) ( ) 信誉:100  2007-7-16 16:00:14  得分: 0  
     
     
       
    不知道楼主的意思是不是单个不要超过三个,也不要少于三个,如果是那样的话,可以使用
    <script language=javascript>
    function _0009(str)
    {
    return (str.replace(/___/g,"").indexOf("_")==-1)
    }alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
    </script>  
     
    谢啦
      

  7.   

    JS的正则比较弱,不支持决策?(exp),不支持反向正声明(?<=),不支持反向负声明(?<!),不支持组命名(?<groupname>) ....
      

  8.   

    楼上各位都没用反向预搜索,是不是jsp不支持?这样可以,不过不是很理想<script language=javascript>
    function _0009(str)
    {
        return /(____+?)|(_+?___)|(([^_]|^)_{1,2}(([^_]+?)|$))/.test(str);
    }alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
    </script>
      

  9.   

    <script language=javascript>
    function _0009(str)
    {
    return /_{4,}|(([^_]|^)_{1,2}((?=[^_]+?)|$))/.test(str);
    }alert(_0009("___ ___ ___"));
    alert(_0009("___ ___ ___ ___"));
    alert(_0009("___ __ ___"));
    alert(_0009("___ ___"));
    alert(_0009("_______"));
    </script>这个测试过可以。不过那个不用正则方式也很好。