-3

これが私が思いついたものですが、それも受け入れます;。誰かが私が欠けているものを理解するのを手伝ってくれますか

var VALID_ALPHANUMERIC_WITH_SPECIAL_CHARS = /^(?=.*[0-9])|(?=.*[a-zA-Z])([a-zA-Z0-9]|[@#!%*&_\/.:{}\[\]\$\-\=\?\\\(\)\+\~\`\^\<\>])+$/;

ありがとう

4

4 に答える 4

1

@nhahtdh はすでに正しい正規表現を提供しています。正規表現が失敗した理由を理解したい場合は、それを見てみましょう。

^(?=.*[0-9])   # Either anchor the match at the start and assert
               # that there is at least one ASCII digit
|              # OR
               # Assert that there is
(?=.*[a-zA-Z]) # at least one ASCII letter, then match
([a-zA-Z0-9]|[special chars...])+ # one or more of these characters
$              # with an unnecessary alternation; anchor the match to the end

問題が見えますか?

于 2013-01-27T13:47:13.733 に答える
1

英数字が少なくとも 1 文字含まれていることを確認し、テキストに英数字といくつかの特殊文字を許可する場合は、以下の正規表現が機能するはずです。また、不必要なエスケープを自由に削除します。

/^(?=.*[A-Za-z0-9])[a-zA-Z0-9@#!%*&_\/.:{}\[\]$=?\\()+~`^<>-]+$/

いくつかの場所ではさらに単純化できますが、わかりやすくするためにそのままにしておきます。

于 2013-01-27T13:20:12.233 に答える
0

1 つの英数字以外;の特殊文字を受け入れたい場合

var re = /^[@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*[a-zA-Z0-9][@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*$/;

少なくとも 1 つの英数字以外;の特殊文字が必要な場合

var re = /^[a-zA-Z0-9@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*[a-zA-Z0-9][a-zA-Z0-9@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*$/;

テスト用のJSFiddle

于 2013-01-27T13:27:13.507 に答える
0

この部分(?=.*[a-zA-Z])は、文字が続く任意の文字に一致するため、一致します;a

(?=[^;]*[a-zA-Z])任意の文字に一致させるために行うことができますが、;

于 2013-01-27T13:37:41.757 に答える