0

JQueryを使用して、テキストボックス内の特殊文字の数を3つに制限しようとしています。特殊文字は任意の順序にすることができ、互いに隣接させることも、テキストボックスの長さ全体に分散させることもできます。私は過去24時間、stackoverflowのほぼすべての関連する投稿を読み、提案を試しました。

私はまだ適切な正規表現を持っていません。

ASP.netmvcフォームの下部にあるものは次のとおりです。

<script type="text/javascript">
    $(document).ready(function () {
        $('input[id$=textbox1]').bind('blur', function () {
            var match = /^[.,:;!?€¥£¢$-~#%&*()_]{4,50}$/g.test(this.value);
            if (match == true)
                alert("Please enter a maximum of 3 special characters.");
        });
    });
</script>

以下は、私がターゲットにしている特殊文字のリストです。

〜`!@#%^&*()-_:;?€¥£¢$-〜{} [] <> / + | =

4

3 に答える 3

1

難しいと思っているあなた。要素が入力内にある頻度を数え、数が3を超えると警告をスローします。

ここにあります

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Demo</title>
        <script src="jquery-1.8.3.min.js"></script>

        <script>
            var limitchars = '[~`!@#%\^&\*\(\)-_:;\?€¥£¢\${}\[]<>/+\|=]'


            $(function () {
                var  teststring = "~`!@#%\^&\*\(\)-_:;\?€¥£¢\${}\[]<>/+\|='-:;";
                var regex = /[~`'!@#%\^&\*\(\)-_:;\?€¥£¢\${}\[\]<>/+\|=]/g

                //var test1 = teststring.match(regex);
                //debugger;
                //alert(teststring.length === test1.length);

                $('input').keyup(function () {
                    var text = this.value;

                    var match = text.match(regex);
                    if (match.length > 3) {
                        alert('invalidI input');
                    }
                });
            });
        </script>
    </head>
    <body>
        <input type="text" />
    </body>
</html>

正規表現(http://www.regular-expressions.info/reference.html)をエスケープすることを忘れないでください。正規表現の最後にあるgは、文字列内の出現回数をカウントします(http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string)

于 2012-11-28T10:42:25.943 に答える
0
$(document).ready(function () {
    $('#test').bind('blur', function () {       

          var charactersToExlude = "~`!@#%^&*()-_:;?€¥£¢$-~{}[]<>/+|=";
          var badCharacterRegex = "[" + charactersToExlude.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") + "]";
          console.log(badCharacterRegex);
          var patt=new RegExp(badCharacterRegex, "g");

          var matches = this.value.match(patt);

          var numberOfBadCharacters = matches ? matches.length : 0;

          if (numberOfBadCharacters >= 3) {
            $("#result").text("Please enter a maximum of 3 special characters. (" + numberOfBadCharacters + " bad characters).");
          } else {
            $("#result").text(numberOfBadCharacters + " bad characters.");
          }

    });
});
于 2013-01-22T10:00:17.600 に答える
0

一致数を数えることで、不良文字の数を見つけることができます。

http://jsbin.com/alidus/1/での実例

 $(document).ready(function () {
        $('#test').bind('blur', function () {       

          var charactersToExlude = "~`!@#%^&*()-_:;?€¥£¢$-~{}[]<>/+|=";
          var badCharacterRegex = "[" + charactersToExlude.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") + "]";
          console.log(badCharacterRegex);
          var patt=new RegExp(badCharacterRegex, "g");

          var matches = this.value.match(patt);

          var numberOfBadCharacters = matches ? matches.length : 0;

          if (numberOfBadCharacters >= 3) {
            $("#result").text("Please enter a maximum of 3 special characters. (" + numberOfBadCharacters + " bad characters).");
          } else {
            $("#result").text(numberOfBadCharacters + " bad characters.");
          }

        });
    });

まず、正規表現に意味のある悪い文字をエスケープします。次に、パターンを作成し、一致させます。一致する場合は、一致数を数えます。

于 2012-11-28T10:42:25.797 に答える