5

以下でテキストフィールドを検証したい:
1.英数字
2.そして、すべての特殊文字
は正規表現が苦手です。上記の正規表現を作成するのを手伝ってくれる人はいますか。

4

5 に答える 5

6

英数字文字列は次のように一致します。

^[a-zA-Z0-9]+$

リストされた文字のみを含み、少なくとも 1 文字の長さの任意の文字列に一致します。

特殊文字を使用すると、同じように機能します。

しかし、特別な文字とは何だと思いますか?

!@#$%^&*()+=-[]\';,./{}|":<>? – 特殊文字のセットである場合、正規表現は次のようになります。

^[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+$

ここでも、許可されているすべての文字がリストされています。正規表現内でコマンドまたは量指定子として使用されるものは、. でエスケープする必要があり\ます。

于 2012-05-04T21:29:45.943 に答える
3

これはあなたが望むことをします。

function validate()
{
        var val = <my string>;

        if (val == '')
            alert('String is empty!');

        else if (!val.match(/[_\W]/))
            alert('String contains only A-Z a-z 0-9 characters!');

        else if (!val.match(/^\w[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\?]/))
            alert('String contains your predefined characters only!');
}

両方の正規表現は二重否定で機能し、最高のパフォーマンスを得るために、不正な文字の最初の一致でfalseを返すことに注意してください。1つ目は、の否定である\W文字セットの否定です\w。2つ目は、事前定義された文字(+事前定義された文字)!の否定の否定です。説明や変更が必要な場合は返信してください。^\w

編集 文字列に少なくとも1つの特殊文字と英数字が含まれている場合に一致する正規表現は次のとおりです。

if (val.match(/[^_\W]/) && val.match(/[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]/))
    alert('String contains both alpha-numeric and your pre-defined special characters!');

それは大丈夫ですか、それとも単一の正規表現パターンで必要ですか?

編集 これは単一の正規表現でそれを行います:

if (val.match(/(?=.*[@!#\$\^%&*()+=\-\[\]\\\';,\.\/\{\}\|\":<>\? ]+?).*[^_\W]+?.*/)
    alert('String contains both alpha-numeric and your pre-defined special characters!');
于 2012-05-04T21:46:10.753 に答える