求校验一个字符串 由数字和连接符"-"组成的正则表达式,比较急,谢谢各位高人了!!!!

解决方案 »

  1.   

    知道的信息越多,就越能写出符合要求的正则表达式,否则就很难达到要求,像你的这个要求,只能做到:regex = null
      

  2.   

    听上去不难 如 
    "\\d\\-\\d" 
    等等 就是lz的描述太抽象 我们用正则无法匹配
      

  3.   

    字符串可以是纯数字,也可以是数字和连接符“-”的组合,但是“-”不可以出现在开始和结尾,字符串的中间不允许有空格,各位帮帮忙。要在javascript中做校验用。谢谢了~~
      

  4.   

    regex = "(?!\\-)[0-9\\-]+(?<!\\-)";
    java中是这样的js中的special constructs还没看 
      

  5.   

    依你现在的要求,只能做成:/^\d(?:\d|-)*\d$/但这样能匹配,1---2 这种形式的,不知道是否满足要求?
      

  6.   

    你的要求不明确,再提供几个你自己试试看,不见得有用1. /^\d(?:\d|-)*\d$/
    2. /^\d(?:\d-|\d)*\d$/
    3. /^\d(?:-\d|\d)*\d$/
    4. /^\d(?:\d-|-\d|\d)*\d$/
      

  7.   

    js貌似不支持负后向锚(?<!
    退一步做法先判断末字符非'-'
    然后再做正则匹配
    regex = "/^(?!\-)[0-9\-]+$/";
      

  8.   

    1~4 有 bug 不能用。5. /^\d(?:\d|-(?!$))*\d?$/ 能匹配 3、3--4、3-5---5
    6. /^\d(?:\d-(?!$)|-\d|\d)*\d?$/ 能匹配 3、3--4、33-4-3,但不能匹配 33---4
    7. /^\d(?:\d|-\d)*\d?$/ 能匹配 3、34-34-34,即其中只允许一個“-”,不允许多个具体要什么样子的,楼主自己看着办吧。
      

  9.   

    var regex = /^\d(?:\d|-(?!$))*\d?$/;
    alert(regex.test("34-34-34"));
      

  10.   

    被提醒了 
    var regex = /^(?!\-)[0-9\-]+\d$/;alert(regex.test("12-12-12"));
      

  11.   

    或这样
    var regex = /^\d(\d|-)*\d$/;
    alert(regex.test("12-12-12"));