文字列を照合して、文字だけで構成されているかどうかを確認しようとしています。あらゆる種類の文字を許可する必要があります。そのため、典型的なa-zA-Z
だけでなく、áàéèó...
など.
次の正規表現と一致させようとしました:([\S])*
ただし、これにより、などの文字も許可されます\/<>*()...
。それらは明らかに名前に属さない文字です。文字と「特殊」文字のみを許可したい場合、正規表現はどのように見えますか?
非正規表現ソリューションの場合は、char.IsLetterを使用できます。
指定されたUnicode文字が英字に分類されるかどうかを示します。
string str = "Abcáàéèó";
bool result = str.All(char.IsLetter);
これfalse
により、数字\/<>*()
などの結果が得られます。
あなたはまさにそれを言うキャラクタークラスを使うことができます:
\p{L}
したがって、正規表現
^\p{L}+$
文字列が文字のみで構成されている場合に一致します。文字の組み合わせを期待する場合は、
^(\p{L}\p{M}*)+$
動作します。
クイックPowerShellテスト:
PS> 'foo','bär','a.b','&^#&%','123','кошка' -match '^\p{L}+$'
foo
bär
кошка