搜尋

首頁  >  問答  >  主體

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] $/;
後面就不會了,而且感覺這些辦法非常的繁瑣冗餘,有沒有正則能去解決這個問題呢?謝謝!

天蓬老师天蓬老师2751 天前1127

全部回覆(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
  • 取消回覆