これが私が思いついたものですが、それも受け入れます;
。誰かが私が欠けているものを理解するのを手伝ってくれますか
var VALID_ALPHANUMERIC_WITH_SPECIAL_CHARS = /^(?=.*[0-9])|(?=.*[a-zA-Z])([a-zA-Z0-9]|[@#!%*&_\/.:{}\[\]\$\-\=\?\\\(\)\+\~\`\^\<\>])+$/;
ありがとう
これが私が思いついたものですが、それも受け入れます;
。誰かが私が欠けているものを理解するのを手伝ってくれますか
var VALID_ALPHANUMERIC_WITH_SPECIAL_CHARS = /^(?=.*[0-9])|(?=.*[a-zA-Z])([a-zA-Z0-9]|[@#!%*&_\/.:{}\[\]\$\-\=\?\\\(\)\+\~\`\^\<\>])+$/;
ありがとう
@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
問題が見えますか?
英数字が少なくとも 1 文字含まれていることを確認し、テキストに英数字といくつかの特殊文字を許可する場合は、以下の正規表現が機能するはずです。また、不必要なエスケープを自由に削除します。
/^(?=.*[A-Za-z0-9])[a-zA-Z0-9@#!%*&_\/.:{}\[\]$=?\\()+~`^<>-]+$/
いくつかの場所ではさらに単純化できますが、わかりやすくするためにそのままにしておきます。
1 つの英数字以外;
の特殊文字を受け入れたい場合
var re = /^[@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*[a-zA-Z0-9][@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*$/;
少なくとも 1 つの英数字以外;
の特殊文字が必要な場合
var re = /^[a-zA-Z0-9@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*[a-zA-Z0-9][a-zA-Z0-9@#!%*&_\/.:{}\[\]$\-=?\\()+~`^<>]*$/;
この部分(?=.*[a-zA-Z])
は、文字が続く任意の文字に一致するため、一致します;a
(?=[^;]*[a-zA-Z])
任意の文字に一致させるために行うことができますが、;