求一段正規用於給文字方塊做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] $/;
後面就不會了,而且感覺這些辦法非常的繁瑣冗餘,有沒有正則能去解決這個問題呢?謝謝!
雷雷
其中,
(d|[1-9]d|1dd|2[0-4]d|25[0-5])
就是專門用來配對0~255 的數字的,上面的正規表示式可以理解為:([0~255].){3}[0~255]
說穿了就是數字開頭數字結尾,數字中間可以插入點號。
ip位址一般兩點,所以
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])
/^d+(?:.d+)*$/
已經親測能滿足題主需求