搜索

首页  >  问答  >  正文

javascript - 求一段js正则:只能输入数字和英文句号,不能连续两个点,不能以“.”开头以及结尾

求一段正则用于给文本框做ip模糊搜索

正确大致格式为:
1.1
1.11.1
1.1.11

满足以下过滤项:
不能用“.”开头:.1.1.11
不能用“.”结尾:1.1.11.
不能连续有2个".": 1..1.11
不能有除英文句号“.”以外的符号:1@1.1
不能有空格:1 .1 .1
不能有字母和汉字
只有1个数字可以通过

因为不太擅长正则,所以用笨办法,一步步排除,我的思路是先把里面的和外面的空格去除:
1.去除里面的空格:/^S*$/
2.去除两边空格:

    while((value.indexOf(" ") == 0) && (value.length > 1)) {
        return false;
    }
    while((value.lastIndexOf(" ") == value.length - 1) && (value.length > 1)) {
        return false;
    }

3.然后排除符号:/<|>|||*|?||"|/|&|#|@|!|~|(|)/;
4.去除中文的正则:/^[u4e00-u9fa5]+$/;
后面就不会了,而且感觉这些办法非常的繁琐冗余,有没有正则能去解决这个问题呢?谢谢!

天蓬老师天蓬老师2792 天前1167

全部回复(5)我来回复

  • 学习ing

    学习ing2017-06-12 09:24:18

    雷雷

    回复
    0
  • 代言

    代言2017-06-12 09:24:18

    /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/
    

    其中,(d|[1-9]d|1dd|2[0-4]d|25[0-5]) 就是专门用来匹配 0~255 的数字的,上面的正则表达式可以理解为:([0~255].){3}[0~255]

    回复
    0
  • 迷茫

    迷茫2017-06-12 09:24:18

    说白了就是数字开头数字结尾,数字中间可以插入点号。

    /^(\d+[.])+\d+$/
    

    ip地址一般两个点,所以

     /^(\d+[.]){2}\d+$/

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:24:18

    IP地址是x.x.x.x这样的格式,x最长是3位整数且不超过255,所以我的正则表达式如下:

    /^([0-9]|[1-9]d|1dd|2[0-4]d|25[0-5])(.([0-9]|[1-9]d|1dd|2[0-4]d|25[0-5])){0,3}$/

    这一部分主要是匹配[0,255]之间的数

    ([0-9]|[1-9]d|1dd|2[0-4]d|25[0-5])

    回复
    0
  • 滿天的星座

    滿天的星座2017-06-12 09:24:18

    /^d+(?:.d+)*$/
    已经亲测能满足题主需求

    回复
    0
  • 取消回复