6

URLが有効か無効かを確認しようとしました。7,8 のチェックは間違った出力を返します。

alert('1: ' + learnRegExp('http://www.google-com.123.com')); // true
alert('2: ' + learnRegExp('http://www.google-com.123')); // false
alert('3: ' + learnRegExp('https://www.google-com.com')); // true
alert('4: ' + learnRegExp('http://google-com.com')); // true
alert('5: ' + learnRegExp('http://google.com')); //true
alert('6: ' + learnRegExp('google.com')); //true
alert('7: ' + learnRegExp('ww.google.com')); //false -> it returns true
alert('8: ' + learnRegExp('www.google.co.il')); //true -> it returns false
alert('9: ' + learnRegExp('http://ww.google.co.il')); //false
alert('10: ' + learnRegExp('https://ww.google.co.il')); //false

function learnRegExp(){
    return /((ftp|https?):\/\/)?(www\.)?[a-z0-9\-\.]{3,}\.[a-z]{3}$/
    .test(learnRegExp.arguments[0]);
}

それを解決するのを手伝ってください。

どんな助けでも大歓迎です!

4

2 に答える 2

8

これを試してください:

 function learnRegExp(s) {    
      var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
      return regexp.test(s);    
 }
于 2013-07-18T14:56:24.473 に答える
0

7 の問題(www\.)?は、0 または 1www.[a-z0-9\-\.]許可し、. それを 0 として扱い、.ww.(www\.)?[a-z0-9\-\.]ww.

8 の問題は、 、 など\.[a-z]{3}のみを許可することです。最後の文字列の後の文字列を強制的に 3 文字の長さにします。2文字しかないので一致しません。.com.net.

ホイールを再作成しようとしないでください:文字列が有効な URL であるかどうかを確認するための最適な正規表現は何ですか?

于 2013-07-18T14:42:26.277 に答える