ユーザー名を検証するためにこのコードを書いたのですが、どのように2つのRegExを1つにまとめることができますか?コードは、最後の文字クラスに貪欲+
を追加#ユーザー名を検証するRegExを1つ作成する
/// <summary>
/// Determines whether the username meets conditions.
/// Username conditions:
/// Must be 1 to 24 character in length
/// Must start with letter a-zA-Z
/// May contain letters, numbers or '.','-' or '_'
/// Must not end in '.','-','._' or '-_'
/// </summary>
/// <param name="userName">proposed username</param>
/// <returns>True if the username is valid</returns>
private static Regex sUserNameAllowedRegEx = new Regex(@"^[a-zA-Z]{1}[a-zA-Z0-9\._\-]{0,23}[^.-]$", RegexOptions.Compiled);
private static Regex sUserNameIllegalEndingRegEx = new Regex(@"(\.|\-|\._|\-_)$", RegexOptions.Compiled);
public static bool IsUserNameAllowed(string userName)
{
if (string.IsNullOrEmpty(userName)
|| !sUserNameAllowedRegEx.IsMatch(userName)
|| sUserNameIllegalEndingRegEx.IsMatch(userName)
|| ProfanityFilter.IsOffensive(userName))
{
return false;
}
return true;
}
2つの半可読正規表現を読みにくい正規表現に変換するのはなぜですか?あなたのコードは現在正しく動作していませんか? 1つの正規表現だけを使用する動機は何ですか? – CanSpice
私の現在の正規表現では、最後の文字として無効な文字を使用できます。例:aab $、aab#は私の正規表現で受け入れられます。または - は[a-zA-Z0-9 \ _] $である必要があります。だから私はコメントのためにそのthxを修正する必要があります。 – Nathan
私はちょうどそれができる方法を見てみたいです。 – Nathan