0

そのため、私が行っているURL検証は非常にリラックスしており、多かれ少なかれ、ユーザーがURLの近くに入力するようにガイドするだけです。

だから私はテスターでやりたいことをしている正規表現を持っています。(複数行のみが選択されています)例:http ://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

ただし、コードで呼び出すと、異なる結果が得られます。

isURLValid: function (value) {
    var urlRegex = new RegExp("^((http|https|ftp)\://)*([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");
    return urlRegex.test(value);
}

要件:http、https、非http、非https、www、および非wwwURLスキームをサポートする必要があります

有効

http://www.adamthings.com
https://www.adamthings.com
www.adamthings.com
adamthings.com

無効

http://www.adamthings
https://www.adamthings
www.adamthings
adamthings

結果はテスターで機能します。コードでは、上記のすべてが有効であることがわかります。正規表現の反応が異なるのはなぜですか?

4

2 に答える 2

1

javascript"\.com" === ".com"の場合:(あなたが望んでいないと思います。)正規表現を作成する代わりに
試してください。/regex/new RegExp("regex")

于 2012-10-22T16:04:38.193 に答える
0

あなたがのようなものを許可したい場合

adamthings.com

先頭http://https://、、、ftp://または部分がない場合は、などの入力を防ぐために、などwww.の許可されたすべてのTLDをリストする必要があります。comnet

john.doe

同様に有効であるため。

次に、正規表現パターンは次のようになります。

^(?:https?:\/\/|ftp:\/\/)?(?:www\.)?(?!www\.)(?:(?!-)[a-z\d-]*[a-z\d]\.)+(?:com|net)

リンクのドメイン部分のみをチェックします。

さらに進んで末尾の部分またはリンクを確認する場合は、追加する必要があります

(?:\/[^\/\s]*)*$

パターンの最初の部分に、ただしこれ(正規表現パターンの一部)はURLを検証しません。

»テストリンク«

于 2012-10-22T16:26:51.740 に答える