0

次の正規表現を使用して試しましたが、要件に一致しませんでした。誰でも私を助けてくれますか pls.... 以下の例の形式の IP アドレスと一致する必要があります。ここに私の正規表現があります:

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

1 に答える 1

2

正規表現を使用しないことを検討することをお勧めします。これは、 splitを使用して解決する方がはるかに簡単で読みやすい問題です。

var ips = '111.222.222.111-222.112.1.2';

ips = ips.split('-');
var ip1 = ips[0].split('.');
var ip2 = ips[1].split('.');

// ip1 is the array ["111", "222", "222", "111"]
// ip2 is the array ["222", "112", "1", "2"]

それらを検証するには、結果の配列に 4 つの要素があることを確認し、各要素を parseInt し、それが と の間にあることを確認する必要があります0( 255ip1 の場合):

var i, temp;
if(ip1.length != 4){
    console.log("Invalid IP");
}
for(i = 0; i < 4; i++){
    temp = parseInt(ip1[i], 10);
    if(0 > temp || temp > 255){
        console.log("Invalid IP");
        break;
    }
}

両方の IP に対してこれを行い、ips に 2 つの IP しかないことを確認します ( ips.length == 2)。

于 2012-12-05T19:46:53.363 に答える