3

RegExpがどのように機能するかを理解するのに苦労しています。

ASPコードをhtmlとjsに書き直す必要がありますが、この部分で障害が発生しました。

<asp:RegularExpressionValidator runat="server" id="RegExpValidator" controltovalidate="FileName" Display="Dynamic" ValidationExpression="[^#%&*:<>?/{|}]+">

ここで、コンテンツが変更されるたびにjs関数を実行する入力テキストボックスを作成します。

<input type="text" id="fileNameTextBox" class="ms-input" size="35" maxlength="123" onchange="regexValidator(this);"/>

function regexValidator(control) {
            var val = $(control).val();
            if(val == undefined || val == '') {

                $(control).attr("class", "invalid");
            } 
            else { 
            // Regex stuff goes in here
            }
        }

さて、私の一生の間、正規表現を構築する方法を理解することはできません。ValidationExpressionフィールドは、適切に構築された正規表現ではないように見えますが、無効な文字をチェックすると想定しています。また、jsで使用する適切な正規表現に書き込む方法がわかりません。誰かがこれを手伝ってくれませんか?

4

3 に答える 3

4

正規表現でフィールド内の無効な文字をチェックする場合は、これを使用できます。

^.*?(?=[\^#%&$\*:<>\?/\{\|\}]).*$これにより、無効な文字が少なくとも1つある場合に、一致するものが得られます。

于 2012-10-17T10:02:42.533 に答える
3

もうすぐです。ここで、文字列が有効な文字のみで構成されていることを確認する必要があります。これを行うには、文字列の最初と最後にアンカーを追加して、繰り返されるシーケンスが文字列全体をカバーするようにします。

ValidationExpression="^[^#%&*:<>?/{|}]+$"

編集:文字列から正規表現を作成する方法も知りたいと思うかもしれません。文字列を正規表現コンストラクターに渡すだけです。

new RegExp(validationExpressionGoesHere);
于 2012-10-17T10:00:59.450 に答える
2

[^#%&*:<>?/{|}]+私には有効な式のように見えます(ただし、通常、正規表現はスラッシュで囲まれています)。基本的に、ファイル名に角かっこ内の不正な文字が含まれているかどうかを確認します(^否定を示すカレットは別として)。

function regexValidator(control) {
        var val = $(control).val();
        if(val == undefined || val == '') {

            $(control).attr("class", "invalid");
        } 
        else if(val.match(/[^#%&*:<>?/{|}]+/)) {
            // Valid
        }
        else {
            // Invalid
        }
    }
于 2012-10-17T10:03:02.597 に答える