60

次の基準に一致する正規表現を作成するにはどうすればよいですか?

  • 数字なし
  • 特殊文字はありません
  • 場所がない

文字列で

4

4 に答える 4

102

文字クラス[^]内の注意は、ほとんどの正規表現の実装(Perl、.NET、Ruby、Javascriptなど)に共通の否定演算子です。だから私はこのようにします:

[^\W\s\d]
  • ^-文字クラスにないものと一致します
  • \ W-単語以外の文字に一致します(単語文字はaz、AZ、0-9、およびアンダースコアとして定義されます)。
  • \ s-空白に一致します(スペース、タブ、キャリッジリターン、改行)
  • \ d-0〜9に一致

または、必要なものだけを含めるだけで、別のアプローチを取ることができます。

[A-Za-z]

ここでの主な違いは、最初のものにはアンダースコアが含まれることです。それ、そしてそれはあなたが考えているのと同じ言葉で表現を書く方法を示しています。ただし、逆にすると、文字を除外するのではなく含めることを考えている場合、正規表現が読みやすくなることがあります。

どの特殊文字が不要かは私には完全にはわかりません。しかし、一方が他方よりもうまく機能する場合に備えて、両方のソリューションを書き留めました。

于 2009-11-19T14:16:21.367 に答える
2

Perlでは、次のようになります。

$string !~ /[\d \W]/

もちろん、それはあなたの「特殊文字」の定義に依存します。\W単語以外のすべての文字に一致します。単語文字は、任意の英数字とスペース文字です。

于 2009-11-19T12:52:33.690 に答える
-1

^ [^ 0-9 \ p{P}]$を試してください

于 2009-11-19T12:56:45.303 に答える
-7
var StringInputToClean = @"[:(M)?*a',\y<>&a#~%{}+.@\\ /27!;$+]";

var pattern = @"[^a-zA-Z0-9\s]";

string replacement = "";

var result = Regex.Replace(StringInputToClean, pattern, replacement);
于 2014-06-16T12:31:24.357 に答える