0

subdomain.domainjQuery バリデーターで URL を検証しようとしていますが、使用している正規表現は、TLD なしでサブドメイン (例: ) を持つドメインを true として誤って検証しています。

サブドメインを検証するこれがあります:

jQuery.validator.addMethod("domainChk", function (value, element, params) {
    if (this.optional(element)) return true;
    var regExp = new RegExp("^[a-zA-Z0-9][a-zA-Z0-9.-]*[a-zA-Z0-9]$");
    return regExp.test(value);
}, "Valid hostname required for player code");

また、TLD を正しく検証していません。それで、私は入ることができsubdomain.domain.aaa123、それは検証されます。また、2 文字未満の TLD も検証します。

これは、米国の視聴者に対してのみ検証する必要があります (したがって、カナダの .ca などは検証する必要はありません)。

4

2 に答える 2

0

TLD を制限したい場合は、そのようにする必要があります。しかし、ここに出発点があります:

/^(https?|ftp):\/\/([0-9A-Za-z][0-9A-Za-z-]{0,61}[0-9A-Za-z]\.)+(<TLD list>)/g
于 2015-07-23T18:56:03.523 に答える
0

代わりにこれを試すことができますか: https://gist.github.com/jlong ​​/2428561

基本的に、A 要素を作成して URL の一部にアクセスできます。

var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";

parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port;     // => "3000"
parser.pathname; // => "/pathname/"
parser.search;   // => "?search=test"
parser.hash;     // => "#hash"
parser.host;     // => "example.com:3000"

広くサポートされている HTMLAnchorElement オブジェクトに関するその他のドキュメントを次に示します。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement

于 2015-07-23T18:12:13.723 に答える