1

以下は、ウェブサイトの URL を検証するために使用している URL 式 (正規表現) です。

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

私のangular 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.\-@_~]+\.[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 を適切に検証するために、コードを修正してもらえますか?

ありがとう。

4

3 に答える 3

1

regexタスクをよりシンプルにしたいようです。したがって、正規表現のみを変更しています。これはほとんどのURLs場合に機能しますが、一部の場所では失敗することもあります

/https?:\/\/(www\.)?(?!www\.)([A-Za-z0-9\-@_~]+\.)[A-Za-z]{2,}(:[0-9]{2,5})?(\.[A-Za-z0-9\/_\-~?&=]+)*/
于 2016-04-01T08:06:32.317 に答える
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>

于 2016-04-01T07:27:42.787 に答える
0

この正規表現が機能するかどうかをテストして確認してください。

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

これは次のものと一致します。

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

一致しません:

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

ここでテストできます:

http://regexr.com/

于 2016-04-01T07:33:40.117 に答える