영숫자 및 밑줄에 대한 정규식
문자열에 대문자, 소문자, 숫자 및 밑줄 만 포함되어 있는지 확인하는 정규식을 원합니다.
해당 문자 만 포함 된 문자열 (또는 빈 문자열) 을 일치 시키려면
"^[a-zA-Z0-9_]*$"
이것은 .NET 정규 표현식 및 다른 많은 언어에서도 작동합니다.
세분화 :
^ : start of string
[ : beginning of character group
a-z : any lowercase letter
A-Z : any uppercase letter
0-9 : any digit
_ : underscore
] : end of character group
* : zero or more of the given characters
$ : end of string
빈 문자열을 허용하지 않으려면 * 대신 +를 사용하십시오.
편집 다른 사람들이 지적했듯이 일부 정규 표현식 언어는의 약어입니다 [a-zA-Z0-9_]
. .NET 정규식 언어에서 ECMAScript 동작을 켜고 \w
속기 (수확 ^\w*$
또는 ^\w+$
)로 사용할 수 있습니다. 다른 언어 및 기본적으로 .NET에서는 \w
다소 넓으며 다른 종류의 유니 코드 문자와도 일치합니다 (이 점을 지적한 Jan 덕분). 따라서 해당 문자 만 일치 시키려면 명시 적 (더 긴) 형식을 사용하는 것이 가장 좋습니다.
여기에 많은 자세한 내용이 있으며, 나는 그것에 대해 깊이 반대하고 있으므로 내 결정적인 대답은 다음과 같습니다.
/^\w+$/
\w
는 [A-Za-z0-9_]
원하는 것과 거의 같습니다 . (믹스에 유니 코드를 도입하지 않는 한)
+
수량자를 사용하면 하나 이상의 문자와 일치합니다. 빈 문자열도 허용하려면 *
대신 사용하십시오.
각 캐릭터가 요구 사항과 일치하는지 확인하고 싶기 때문에 다음을 사용합니다.
[A-Za-z0-9_]
속기 버전을 사용할 수도 있습니다.
\w
어느 것이 동등한 지 (일부 정규식 풍미에서는 사용하기 전에 확인하십시오). 그런 다음 전체 문자열이 일치해야 함을 나타내려면 다음을 사용하십시오.
^
문자열이 해당 문자로 시작해야 함을 나타내려면
$
문자열을 나타내려면 해당 문자로 끝나야합니다. 그런 다음 사용
\w+ or \w*
"1 이상"또는 "0 이상"을 나타냅니다. 모든 것을 종합하면 다음과 같은 이점이 있습니다.
^\w*$
음 ... 질문 : 캐릭터가 하나 이상 있어야합니까? 빈 문자열 일 수 있습니까?
^[A-Za-z0-9_]+$
적어도 하나의 대문자 또는 소문자 영숫자 또는 밑줄을 수행합니다. 길이가 0이 아닌 경우 +를 *로 대체하십시오.
^[A-Za-z0-9_]*$
편집하다:
분음 부호를 포함해야하는 경우 (예 : cedilla-ç) 위와 동일하지만 분음 부호 문자를 포함하는 단어 문자를 사용해야합니다.
^\w+$
또는
^\w*$
보다 장황하지만 \w
POSIX 문자 클래스 이름 ( http://www.zytrax.com/tech/web/regex.htm#special ) 의 가독성을 개인적으로 높이 평가합니다 .
^[[:alnum:]_]+$
그러나 위 링크의 문서에는 \w
"0-9, A-Z 및 a-z 범위의 모든 문자와 일치 (POSIX [: alnum :]과 동일)"라는 내용이 있지만 사실은 아닙니다. . grep -P
어쨌든 아닙니다 . 사용하는 경우 밑줄을 명시 적으로 포함해야 [:alnum:]
하지만 사용하는 경우에는 포함 하지 않아야합니다 \w
. 짧고 달콤한 것에 대해 다음을 이길 수 없습니다.
^\w+$
가독성과 함께 POSIX 문자 클래스 ( http://www.regular-expressions.info/posixbrackets.html )를 사용하면 정규 표현식이 ASCII가 아닌 문자열에서 작동 할 수 있으며, 범위 기반 정규 표현식은 의존하지 않으므로 범위 기반 정규 표현식이 작동하지 않습니다. ASCII 문자의 기본 순서는 다른 문자 집합과 다를 수 있으므로 캡처하려는 ASCII가 아닌 문자 (예 : –)를 제외합니다.
Computer Science에서 영숫자 값은 종종 첫 번째 문자가 숫자가 아니라 알파벳 또는 밑줄임을 의미합니다. 그 후, 문자가 될 수있다 0-9
, A-Z
, a-z
, 또는 밑줄 ( _
).
그 방법은 다음과 같습니다.
PHP에서 테스트 :
$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'
또는 이것을 가지고
^[A-Za-z_][A-Za-z\d_]*$
개발 언어로 배치하십시오.
어때요?
^([A-Za-z]|[0-9]|_)+$
... 명시 적이거나 다음과 같은 경우 :
^\w+$
... 간결한 것을 선호하는 경우 (Perl 구문).
lookaheads를 사용하여 "적어도 하나"를 수행하십시오. 훨씬 쉬워요.
다음은 하나 이상의 숫자와 하나의 문자를 포함하는 1-10 개의 문자가 필요한 예입니다.
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$
참고 : \ w를 사용할 수 있었지만 ECW / 유니 코드 고려 사항은 \ w "워드 문자"의 문자 범위를 증가시킵니다.
문자열에 대해 만든 다국어 확장을 시도하십시오.
IsAlphaNumeric-문자열에는 적어도 1 개의 알파 (charSet에 지정된 유니 코드 범위의 문자)와 적어도 1 개의 숫자 (numSet에 지정된)가 포함되어야합니다. 또한 문자열은 알파와 숫자로만 구성되어야합니다.
IsAlpha-문자열은 최소한 1 개의 알파 (특정 언어 charSet)를 포함해야하며 알파로 만 구성되어야합니다.
IsNumeric-문자열은 최소한 1 개의 숫자 (지정된 언어 numSet)를 포함해야하며 숫자로만 구성되어야합니다.
원하는 언어에 대한 charSet / numSet 범위를 지정할 수 있습니다. 유니 코드 범위는 아래 링크에서 제공됩니다.
http://www.ssec.wisc.edu/~tomw/java/unicode.html
API :
public static bool IsAlphaNumeric(this string stringToTest)
{
//English
const string charSet = "a-zA-Z";
const string numSet = @"0-9";
//Greek
//const string charSet = @"\u0388-\u03EF";
//const string numSet = @"0-9";
//Bengali
//const string charSet = @"\u0985-\u09E3";
//const string numSet = @"\u09E6-\u09EF";
//Hindi
//const string charSet = @"\u0905-\u0963";
//const string numSet = @"\u0966-\u096F";
return Regex.Match(stringToTest, @"^(?=[" + numSet + @"]*?[" + charSet + @"]+)(?=[" + charSet + @"]*?[" + numSet + @"]+)[" + charSet + numSet +@"]+$").Success;
}
public static bool IsNumeric(this string stringToTest)
{
//English
const string numSet = @"0-9";
//Hindi
//const string numSet = @"\u0966-\u096F";
return Regex.Match(stringToTest, @"^[" + numSet + @"]+$").Success;
}
public static bool IsAlpha(this string stringToTest)
{
//English
const string charSet = "a-zA-Z";
return Regex.Match(stringToTest, @"^[" + charSet + @"]+$").Success;
}
사용법 :
//English
string test = "AASD121asf";
//Greek
//string test = "Ϡϛβ123";
//Bengali
//string test = "শর৩৮";
//Hindi
//string test = @"क़लम३७ख़";
bool isAlphaNum = test.IsAlphaNumeric();
다음 정규식은 영숫자 및 밑줄과 일치합니다.
^[a-zA-Z0-9_]+$
예를 들어, Perl에서 :
#!/usr/bin/perl -w
my $arg1 = $ARGV[0];
# check that the string contains *only* one or more alphanumeric chars or underscores
if ($arg1 !~ /^[a-zA-Z0-9_]+$/) {
print "Failed.\n";
} else {
print "Success.\n";
}
나에게 알파, 숫자 및 알파벳 숫자를 구별하고 싶은 문제가있어서 영숫자 문자열에 적어도 하나의 알파와 적어도 하나의 숫자가 포함되도록하려면 다음을 사용했습니다.
^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$
유니 코드 영숫자 일치를 찾는 사람들에게는 다음과 같은 작업을 원할 수 있습니다.
^[\p{L} \p{Nd}_]+$
http://unicode.org/reports/tr18/ 및 http://www.regular-expressions.info/unicode.html 에서 추가로 읽으십시오 .
나는 당신이 당신의 성냥에서 라틴어와 유니 코드 문자를 사용하지 않는다고 생각합니다. 예를 들어 "ã"또는 "ü"문자를 사용해야하는 경우 "\ w"를 사용할 수 없습니다.
또는이 방법을 사용할 수 있습니다.
^[A-ZÀ-Ýa-zà-ý0-9_]+$
그것이 도움이되기를 바랍니다!
다음은 수량자를 사용하여 1 자 이상 255 자 이하로 지정하려는 정규식입니다.
[^a-zA-Z0-9 _]{1,255}
전체 문자열을 확인하고 빈 문자열을 허용하지 않으려면
^[A-Za-z0-9_]+$
이것은 나를 위해 작동합니다.
[\\p{Alnum}_]
^\w*$
아래 조합에서 작동합니다
1
123
1av
pRo
av1
참고 URL : https://stackoverflow.com/questions/336210/regular-expression-for-alphanumeric-and-underscores
'Programming' 카테고리의 다른 글
Android 애플리케이션의 아이콘 설정 (0) | 2020.02.10 |
---|---|
Bash에서 변수가 숫자인지 어떻게 테스트합니까? (0) | 2020.02.10 |
build.gradle 파일에 로컬 .jar 파일 종속을 추가하는 방법? (0) | 2020.02.10 |
RecyclerView onClick (0) | 2020.02.10 |
자바에서 문자열을 반복하는 간단한 방법 (0) | 2020.02.10 |