2016-04-01 7 views
1

次は私がウェブサイトのURLを検証するために使用しているURLの表現(regex)で次のように正規表現がウェブサイトのURLを正しく検証しないのはなぜですか?

/(https?:\/\/)(www)?[A-Za-z0-9.\[email protected]_~]+\.[A-Za-z]{2,}(:[0-9]{2,5})?(\/[A-Za-z0-9\/_\-.~?&=]*)*/ 

マイ角度JSコードの実装は次のとおりです。

<md-input-container class="md-block" style="margin-top:20px;"> 
     <label>Website</label> 
     <input ng-model="schoolDetails.website" name="website" ng-change="editField()" type="url" ng-pattern="/(https?:\/\/)(www)?[A-Za-z0-9.\[email protected]_~]+\.[A-Za-z]{2,}(:[0-9]{2,5})?(\/[A-Za-z0-9\/_\-.~?&=]*)*/"> 
     <div ng-messages="schoolDetailsForm.website.$error"> 
      <div ng-message="pattern">Please enter a valid website</div> 
     </div> 
</md-input-container> 

は、私は、有効なURL http://www.bharatividyapeeth.eduにそれを与えると仮定正常に動作します。 無効なURLを指定すると、http://www.というエラーメッセージが表示されますが、無効なURLを入力すると、http://www.bharatividyapeethはエラーメッセージを表示せず、有効なURLとして受け付けます。

ウェブサイトのURLを正しく検証するために、コードを修正してください。

ありがとうございました。

+0

で失敗しますが(\/- * [A-ZA-Z0-9 \/_ \。〜&=?]) * '' 0 'が出てもマッチを成功させる – rock321987

+0

@ rock321987:正しい正規表現を答えにしてください。それは私にとって大きな助けになるでしょう。私はそれを迅速に答えとして受け入れるべきです。 – user2839497

+0

['ng-pattern ="/^(https::\/\ /)(www \。)?(?! www \。)[A-Za-z0-9。 [A-Za-z] {2、}(:[0-9] {2,5})?(\/[A-Za-z0-9 \/_&= - ] *)* $ /"'()(https://regex101.com/r/eE3dT5/1) –

答えて

1

をあなたの仕事のためにregex簡素にしたいようです。だから私はあなたの正規表現を変更しています。これはURLsほとんどのために動作しますが、また最後の `*` `でいくつかの場所

/https?:\/\/(www\.)?(?!www\.)([A-Za-z0-9\[email protected]_~]+\.)[A-Za-z]{2,}(:[0-9]{2,5})?(\.[A-Za-z0-9\/_\-~?&=]+)*/ 
1

これは私には正しいように思える:

var str = 'http://www.bharatividyapeeth.in' 
 
var reg = /(http|https)(:\/\/)+?(w{3}(\.\w*\.))+(edu|com|co\.in|in)/gi; 
 

 
document.querySelector('pre').innerHTML = str.match(reg)[0];
<pre></pre>

+0

ドットはエスケープされません。 –

+0

@WiktorStribiżew私は正規表現が良くないです。ちょうど良いことを知らない何かを試したり、OK。 – Jai

+0

これは現在の例で動作しますが、 'http:// www..edu'とも一致します –

0

テストし、この正規表現は、あなたのために働くかどうかを確認してください:

(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,}) 

この1つは、以下に一致します。 :

http://www.bharatividyapeeth.edu 
https://www.bharatividyapeeth.edu 
www.bharatividyapeeth.edu 

が一致しません:

http://www.bharatividyapeeth 
https://www.bharatividyapeeth 
www.bharatividyapeeth 

をあなたがここにテストすることができます。

http://regexr.com/

関連する問題