1. ホーム
  2. ジャバスクリプト

[解決済み】正規表現で特殊文字とアルファベットをマッチングさせる

2022-03-17 16:36:58

質問

文字と数字と特殊文字を含む文字列を検証しようとしています。 &-._ のみです。そのために正規表現で試してみました。

var pattern = /[a-zA-Z0-9&_\.-]/
var qry = 'abc&*';
if(qry.match(pattern)) {
    alert('valid');
}
else{
    alert('invalid');
}

上記のコードを使用している間、文字列 abc&* は有効です。つまり、文字、数字、特殊文字以外の文字が含まれる場合、その文字が無効であることを表示する必要があります。 &-._ が来た場合、その文字列は無効と評価される必要があります。正規表現でこれを行うにはどうしたらよいでしょうか?

どのように解決するのですか?

ただし、[-]などの一部の文字はエスケープする必要があります。

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

そうすれば、不許可にしたい文字を個別に削除することができます。

また、文字列の開始と終了のプレースマークである^と$も含めたい。

更新してください。

elclanrsが理解していたように(他の人は当初理解していなかった)、このような だけ パターン内で許可される必要がある特殊文字は &-._ です。

/^[\w&.\-]+$/

[♪♪~

ダッシュはリストの先頭や末尾にある場合はエスケープする必要はありませんが、他の文字が追加されたときのためにエスケープしておくとよいでしょう。さらに、+はリストにある文字のうち少なくとも1つが必要であることを意味します。ゼロでよい場合(つまり空の値)には、代わりに*に置き換えてください。

/^[\w&.\-]*$/