사용자 명을 검증하기 위해이 코드를 작성했습니다. 주어진 조건을 충족 시키려면이 코드를 작성했는데, 어떻게하면 2 개의 RegEx를 하나의 코드로 변환 할 수 있습니까? 코드는 C#을에게 있습니다사용자 명을 확인하기 위해 하나의 RegEx를 생성하십시오.
/// <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;
}
두 개의 반투명 정규 표현식을 하나의 읽기 어려운 정규 표현식으로 바꾸는 이유는 무엇입니까? 코드가 현재 올바르게 작동하지 않습니까? 하나의 정규 표현식만을 사용하는 동기는 무엇입니까? – CanSpice
바로 내 현재 정규식은 마지막 문자로 잘못된 문자를 허용합니다. 예를 들면 : aab $ 또는 aab #는 내 정규식에서 허용됩니다. 왜냐하면 last 절은 그렇지 않은 문자를 사용하기 때문입니다. 또는 - 은 [a-zA-Z0-9 \ _] $이어야합니다. 그래서 나는 그 코멘트를 위해 thx를 고칠 필요가있다. – Nathan
방금 어떻게 할 수 있는지보고 싶었습니다. – Nathan