3

私は本当の正規表現 n00b なので、あなたの助けを求めます: 文字と数字のみに一致し、句読点、ASCII 以外の文字、およびスペースを除外する正規表現の魔女が必要です。

「ilikestackoverflow2012」は有効な文字列です。

" f### you °§è " 無効です。

こんにちは世界」は無効です

" hello-world " と " *hello_world* " は無効です

等々。

おそらく複雑なビジネス名の URL をわかりやすくするために必要です。

前もって感謝します!

4

7 に答える 7

2

以下の正規表現を使用できます。

^[a-zA-Z0-9]+$

于 2012-07-13T14:24:10.117 に答える
2

文字列を検証するには、次の正規表現を で使用できますRegex.IsMatch

"^[0-9A-Za-z]+$"

説明:

  • ^文字列アンカーの開始です。
  • [...]文字クラスです。
  • +1つ以上を意味します。
  • $文字列アンカーの終わりです。

おそらく複雑なビジネス名の URL をわかりやすくするために必要です

次に、一致しない文字を置き換えます。Regex.Replace次の正規表現で使用します。

"[^0-9A-Za-z]+"

説明:

  • [^...]否定文字クラスです。

コード:

string result = Regex.Replace(input, "[^0-9A-Za-z]+" , "");

オンラインでの動作を確認してください: ideone


異なるビジネス名が同じ結果の文字列を与える可能性があることに注意してください。たとえば、名前に漢字のみが含まれるビジネスはすべて空の文字列になります。

于 2012-07-13T14:22:23.590 に答える
2
^[0-9a-zA-Z]+$

スペースまたは英字以外の文字を含まない 1 つ以上の英数字に一致します。

于 2012-07-13T14:22:50.753 に答える
2

これには正規表現は必要ありません。

string s = "......"
var isValid = s.All(Char.IsLetterOrDigit);

-

おそらく複雑なビジネス名の URL をわかりやすくするために必要です

使用することもできますHttpUtility.UrlEncode

var urlFriendlyString = HttpUtility.UrlEncode(yourString);
于 2012-07-13T14:24:58.783 に答える
1

何が問題なの[:alnum:]ですか? これはposix標準です。したがって、正規表現全体は次のようになります^[:alnum:]+$

正規表現に関するウィキペディアの記事には、多くの例と詳細が含まれています。

于 2012-07-13T14:24:18.213 に答える
1

試す

^[a-zA-Z0-9]+$

www.regexr.comは素晴らしいリソースです。

于 2012-07-13T14:22:03.467 に答える
1

これを試して:

var regex = new Regex(@"^[a-zA-Z0-9]+$");
var test = new[] {"ilikestack", "hello world", "hello-world", "###"};

foreach (var s in test)
   Console.WriteLine("{0}: {1}", s, regex.IsMatch(s));

編集: @Andre_Miller が言ったようなものが必要な場合は、Regex.Replace(); で同じ正規表現を使用する必要があります。

Regex.Replace(s, @"[^a-zA-Z0-9]+", "")

また

var regex = new Regex(@"^[a-zA-Z0-9]+$");
regex.Replace("input-string-@#$@#");
于 2012-07-13T14:25:08.713 に答える