답변:
다음 표현식을 사용하십시오.
^[a-zA-Z0-9]*$
즉 :
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
.NET 4.0에서는 LINQ를 사용할 수 있습니다.
if (yourText.All(char.IsLetterOrDigit))
{
//just letters and digits.
}
yourText.All
계약을 이행 할 수 없기 때문에 실행을 중지 false
하고 처음 char.IsLetterOrDigit
보고서를 반환 합니다 .false
All
노트! 이 답변은 영숫자 (일반적으로 AZ, az 및 0-9)를 엄격하게 확인하지 않습니다. 이 답변은 åäö
.
업데이트 2018-01-29
위의 구문은 올바른 유형 (이 경우 char
) 의 단일 인수가있는 단일 메서드를 사용할 때만 작동합니다 .
여러 조건을 사용하려면 다음과 같이 작성해야합니다.
if (yourText.All(x => char.IsLetterOrDigit(x) || char.IsWhiteSpace(x)))
{
}
char.IsLetterOrDigit('ก')
는를 반환 true
합니다. csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8ca
정규식이 아닌 확장 기능으로 쉽게 할 수 있습니다 ...
public static bool IsAlphaNum(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
for (int i = 0; i < str.Length; i++)
{
if (!(char.IsLetter(str[i])) && (!(char.IsNumber(str[i]))))
return false;
}
return true;
}
댓글 당 :) ...
public static bool IsAlphaNum(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
return (str.ToCharArray().All(c => Char.IsLetter(c) || Char.IsNumber(c)));
}
char.IsLetterOrDigit
대신에 대해서 isLetterOrDigit + ISNUMBER
정규식 기반 솔루션이 아마도 내가 가고 싶은 방식이라고 생각하지만 이것을 유형으로 캡슐화하고 싶을 것입니다.
public class AlphaNumericString
{
public AlphaNumericString(string s)
{
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(s))
{
value = s;
}
else
{
throw new ArgumentException("Only alphanumeric characters may be used");
}
}
private string value;
static public implicit operator string(AlphaNumericString s)
{
return s.value;
}
}
이제 유효성이 검증 된 문자열이 필요할 때 메서드 서명에 AlphaNumericString이 필요하도록 할 수 있으며, 하나를 가져 오면 유효하다는 것을 알 수 있습니다 (null 제외). 누군가 검증되지 않은 문자열을 전달하려고하면 컴파일러 오류가 발생합니다.
당신은 더 좋아하고 모든 등식 연산자를 구현하거나 관심이 있다면 일반 ol '문자열에서 AlphaNumericString에 대한 명시 적 캐스트를 구현할 수 있습니다.
static public implicit operator string
부분 을 이해하려고 해요
AZ, az, 0-9를 확인해야했습니다. 정규식없이 (OP가 정규식을 요구하더라도).
여기에서 다양한 답변과 의견을 혼합하고 https://stackoverflow.com/a/9975693/292060의 토론을 결합 하여 문자 또는 숫자를 테스트하고 다른 언어 문자를 피하고 분수 문자와 같은 다른 숫자를 피합니다.
if (!String.IsNullOrEmpty(testString)
&& testString.All(c => Char.IsLetterOrDigit(c) && (c < 128)))
{
// Alphanumeric.
}
^\w+$
허용 할 것이다 a-zA-Z0-9_
^[a-zA-Z0-9]+$
밑줄을 허용하지 않으려면 사용 합니다.
이 두 가지 모두 문자열이 비어 있지 않아야합니다. *
대신 사용 +
하면 빈 문자열 이 허용됩니다.
^[\w-]+$
여기 와 같은 대답 입니다.
정규식이 아닌 ASCII A-z 0-9
검사 를 원하면 char.IsLetterOrDigit()
다른 유니 코드 문자를 포함하므로 사용할 수 없습니다 .
할 수있는 일은 문자 코드 범위를 확인하는 것입니다.
다음은 좀 더 장황하지만 코드 골프보다는 이해하기 쉽기위한 것입니다.
public static bool IsAsciiAlphaNumeric(this string str)
{
if (string.IsNullOrEmpty(str))
{
return false;
}
for (int i = 0; i < str.Length; i++)
{
if (str[i] < 48) // Numeric are 48 -> 57
{
return false;
}
if (str[i] > 57 && str[i] < 65) // Capitals are 65 -> 90
{
return false;
}
if (str[i] > 90 && str[i] < 97) // Lowers are 97 -> 122
{
return false;
}
if (str[i] > 122)
{
return false;
}
}
return true;
}
.NET 프레임 워크의 준비된 코드에 의존하지 말고 새로운 솔루션을 가져 오십시오. 이것이 내가하는 일입니다.
public bool isAlphaNumeric(string N)
{
bool YesNumeric = false;
bool YesAlpha = false;
bool BothStatus = false;
for (int i = 0; i < N.Length; i++)
{
if (char.IsLetter(N[i]) )
YesAlpha=true;
if (char.IsNumber(N[i]))
YesNumeric = true;
}
if (YesAlpha==true && YesNumeric==true)
{
BothStatus = true;
}
else
{
BothStatus = false;
}
return BothStatus;
}
char.IsNumber()
메서드를 사용해서는 안됩니다 .