0

jquery.validator と xregexp を使用して文字列をテストしようとしていますが、大文字と小文字を区別しないようにフラグを動的に設定できる必要があります。問題は、param を使用して xregexp のフラグを addmethod に送信する方法がわからないことです。これが私の addmethod が現在どのように見えるかです:

$.validator.addMethod(
    "regex",
    function(value, element, regexp) {
        var re = new XRegExp(regexp);
        return this.optional(element) || re.test(value);
    },
    "Please check your input."
);

そして、これが私の呼び出しです:

webAddr: {
    regex: '^(http(s)?:\/\/)?(([a-z]+[a-z0-9-\\.]*)\\.)+[a-z]{2,}$\\i',
    maxlength: 256,
    minlength: 4
},

私の問題は\\iです。含めたいのですが、ドキュメントによると、この形式を使用して別のパラメーターとして含める必要があります。

XRegExp(regexp, flags);

jquery.validator を使用してそのダイナミックを渡すにはどうすればよいですか?

PS: 私が xregexp を使用していて、それ以外のものを使用していない理由は、コードの他の場所で真の UTF-8 サポートが必要だからです。

4

1 に答える 1

1

regex適切な正規表現をフラグから分離するためのオブジェクトを渡します。

webAddr: {
    regex: {regex: '^(http(s)?:\/\/)?(([a-z]+[a-z0-9-\\.]*)\\.)+[a-z]{2,}$', 
            flags:'i'},
    maxlength: 256,
    minlength: 4
},

(フラグとして聞いたことがないので、フラグを から'\\i'に変更しました。)'i''\\i'

検証コードを次のように変更します。

$.validator.addMethod(
    "regex",
    function(value, element, param) {
        var re = new XRegExp(param.regex, param.flags);
        return this.optional(element) || re.test(value);
    },
    "Please check your input."
);

私はこのコードをテストしていないので、タイプミスに注意してください。

于 2014-02-19T02:43:29.127 に答える