さて、私は今一日中正規表現について読んでいますが、それでも正しく理解していません。私がやろうとしているのは名前を検証することですが、インターネット上でこれを見つけることができる関数は、[a-zA-Z]
受け入れる必要のある文字を除外して、使用するだけです。
基本的に、名前が2つ以上の単語であり、数字や特殊文字が含まれていないことを確認する正規表現が必要ですが!"#¤%&/()=...
、単語にはæ、é、Âなどの文字を含めることができます...
受け入れられる名前の例は、「JohnElkjærd」または「AndréSvenson」です。
受け入れられない名前は、「Hans」、「H 4 nn 3 Andersen」、または「MartinHenriksen !」です。
重要な場合は、javascript関数のクライアント側を使用し、phpの唯一の「ネガティブ」サーバー側.match()
を使用したいと思います。preg_replace()
(一致しない文字を削除します)。
どんな助けでも大歓迎です。
更新:わかりました。AlixAxelの回答の
おかげで、重要な部分がサーバー側にあります。
しかし、LightWingの回答のページが示唆しているように、JavaScriptのUnicodeサポートについては何も見つからないため、クライアント側の解決策の半分になり、次のように少なくとも2つの単語と5つ以上の文字をチェックするだけです。
if(name.match(/\S+/g).length >= minWords && name.length >= 5) {
//valid
}
別の方法は、 shiftyの回答で提案されているように、すべてのUnicode文字を指定することです。これは、上記の解決策とともに、次のようなことになる可能性がありますが、少し実用的ではありません。