3

フォームに住所フィールドがあり、制限し
* | \ " : < > [ ] { } \ ( ) '' ; @ & $
たい

var nospecial=/^[^* | \ " : < > [ ] { } ` \ ( ) '' ; @ & $]+$/;
            if(address.match(nospecial)){
                alert('Special characters like * | \ " : < > [ ] { } ` \ ( ) \'\' ; @ & $ are not allowed');
                return false;

しかし、それは機能していません。私が逃したものを教えてください。

4

4 に答える 4

11

文字クラス内の閉じ括弧(および円記号)をエスケープする必要があります。また、すべてのスペースは必要ありません。

var nospecial=/^[^*|\":<>[\]{}`\\()';@&$]+$/;

私はあなたのすべてのスペースを取り除きました。スペース文字も制限する場合は、にスペースを1つ追加し直します。

編集@fabがコメントで指摘しているように、正規表現の意味を逆にする方が効率的です。

var specials=/[*|\":<>[\]{}`\\()';@&$]/;

(特殊文字がないのではなく)特殊文字が存在するかどうかをテストします。

if (specials.test(address)) { /* bad address */ }
于 2013-02-07T07:38:10.397 に答える
0

これを使用すると問題が解決します

文字列パターン = r"[!-/:-@[-`{-~]";

正規表現 regExp = RegExp(パターン);

于 2021-11-10T08:48:59.687 に答える