VBScript-정규식

정규식은 패턴을 형성하는 일련의 문자로, 주로 검색 및 바꾸기에 사용됩니다. 패턴을 만드는 목적은 개발자가 조건에 따라 문자를 추출하고 특정 문자를 대체 할 수 있도록 특정 문자열을 일치시키는 것입니다.

RegExp 개체

RegExp 개체는 개발자가 문자열 패턴을 일치시키는 데 도움이되며 속성 및 메서드는 정규식을 쉽게 사용할 수 있도록 도와줍니다. JavaScript의 RegExp와 유사합니다.

속성

  • Pattern − Pattern 방식은 정규식을 정의하는 데 사용되는 문자열을 나타내며 정규식 객체를 사용하기 전에 설정해야합니다.

  • IgnoreCase− true 또는 false 인 경우 문자열의 가능한 모든 일치에 대해 정규식을 테스트해야하는지 여부를 나타내는 부울 속성. 명시 적으로 지정하지 않으면 IgnoreCase 값이 False로 설정됩니다.

  • Global− 정규식이 문자열의 모든 가능한 일치에 대해 테스트되어야하는지 여부를 나타내는 부울 속성. 명시 적으로 지정하지 않으면 전역 값이 False로 설정됩니다.

행동 양식

  • Test(search-string) − Test 메서드는 문자열을 인수로 사용하고 정규식이 문자열과 성공적으로 일치 할 수 있으면 True를 반환하고 그렇지 않으면 False를 반환합니다.

  • Replace(search-string, replace-string) − Replace 메서드는 2 개의 매개 변수를 사용합니다. 검색이 성공하면 일치하는 문자열을 replace-string으로 바꾸고 새 문자열을 반환합니다. 일치하는 항목이 없으면 원래 검색 문자열이 반환됩니다.

  • Execute(search-string) − Execute 메서드는 각 성공적인 일치에 대해 Match 개체를 포함하는 Matches 컬렉션 개체를 반환한다는 점을 제외하면 Replace와 같이 작동합니다. 원래 문자열을 수정하지 않습니다.

컬렉션 개체와 일치

Matches 컬렉션 개체는 Execute 메서드의 결과로 반환됩니다. 이 컬렉션 개체는 0 개 이상의 Match 개체를 포함 할 수 있으며이 개체의 속성은 읽기 전용입니다.

  • Count − Count 메서드는 컬렉션의 일치 개체 수를 나타냅니다.

  • Item − Item 메서드를 사용하면 매치 컬렉션 개체에서 매치 개체에 접근 할 수 있습니다.

개체 일치

Match 개체는 match 컬렉션 개체 내에 포함됩니다. 이러한 개체는 문자열 검색 후 성공적인 일치를 나타냅니다.

  • FirstIndex− 일치가 발생한 원래 문자열 내 위치를 나타냅니다. 이 인덱스는 0부터 시작하므로 문자열의 첫 번째 위치가 0입니다.

  • Length − 일치하는 문자열의 총 길이를 나타내는 값.

  • Value− 일치하는 값 또는 텍스트를 나타내는 값. Match 개체에 액세스 할 때의 기본값이기도합니다.

패턴 매개 변수에 관한 모든 것

패턴 구축은 PERL과 유사합니다. 패턴 구축은 정규 표현식으로 작업하는 동안 가장 중요한 것입니다. 이 섹션에서는 다양한 요소를 기반으로 패턴을 만드는 방법을 다룹니다.

위치 매칭

위치 일치의 중요성은 정규 표현식을 올바른 위치에 배치하는 것입니다.

상징 기술
^ 문자열의 시작 부분 만 일치합니다.
$ 문자열의 끝만 일치합니다.
\비 모든 단어 경계와 일치
\비 비 단어 경계와 일치

리터럴 매칭

알파벳, 숫자 또는 특수 문자 또는 십진수, 16 진수와 같은 모든 형식의 문자는 리터럴로 처리 할 수 ​​있습니다. 정규식 컨텍스트 내에서 이미 특별한 의미를 가진 문자가 거의 없으므로 이스케이프 시퀀스를 사용하여 이스케이프해야합니다.

상징 기술
영숫자 알파벳 및 숫자 만 일치합니다.
\엔 새 줄과 일치합니다.
\ [ 일치 [리터럴 만
\] 일치] 리터럴 만
\ ( 일치 (리터럴 만
\) 일치) 리터럴 만
\티 가로 탭과 일치
\V 수직 탭과 일치
\ | 일치 | 리터럴 만
\ { {리터럴 만 일치
\} } 리터럴 만 일치
\\ \ 리터럴 만 일치
\? 일치? 리터럴 만
\ * * 리터럴 만 일치
\ + 일치 + 리터럴 만
\. 일치합니다. 리터럴 만
\비 모든 단어 경계와 일치
\비 비 단어 경계와 일치
\에프 양식 피드와 일치
\아르 자형 캐리지 리턴과 일치
\트리플 엑스 8 진수 xxx의 ASCII 문자와 일치합니다.
\ xdd 16 진수 dd의 ASCII 문자와 일치합니다.
\ uxxxx UNICODE 리터럴 xxxx의 ASCII 문자와 일치합니다.

캐릭터 클래스 매칭

문자 클래스는 사용자 정의 그룹화에 의해 형성되고 [] 중괄호로 묶인 패턴입니다. 목록에 없어야하는 문자 클래스를 예상하는 경우에는 캡 ^ 인 음수 기호를 사용하여 특정 문자 클래스를 무시해야합니다.

상징 기술
[xyz] 문자 집합에 포함 된 모든 문자 클래스와 일치합니다.
[^ xyz] 문자 집합에 포함되지 않은 모든 문자 클래스와 일치합니다.
. \ n을 제외한 모든 문자 클래스와 일치합니다.
\ w 모든 단어 문자 클래스와 일치합니다. [a-zA-Z_0-9]와 동일
\ W 단어가 아닌 문자 클래스와 일치합니다. [^ a-zA-Z_0-9]와 동일
\디 모든 숫자 클래스와 일치합니다. [0-9]와 같습니다.
\디 숫자가 아닌 문자 클래스와 일치합니다. [^ 0-9]와 같습니다.
\에스 공백 문자 클래스와 일치합니다. [\ t \ r \ n \ v \ f]와 동일
\에스 공백 문자 클래스와 일치합니다. [^ \ t \ r \ n \ v \ f]와 동일

반복 매칭

반복 일치는 정규 표현식 내에서 여러 검색을 허용합니다. 또한 정규식에서 요소가 반복되는 횟수를 지정합니다.

상징 기술
* 지정된 정규식의 0 개 이상의 발생과 일치합니다. {0,}와 같습니다.
+ 주어진 정규식의 하나 이상의 발생과 일치합니다. {1,}에 해당합니다.
? 주어진 정규식의 0 개 또는 1 개의 발생과 일치합니다. {0,1}과 같습니다.
{엑스} 주어진 정규식의 정확히 x 개의 발생 횟수와 일치합니다.
{엑스,} 주어진 정규식의 최소 x 개 이상의 발생과 일치합니다.
{x, y} 주어진 정규식의 발생 횟수를 x에서 y로 찾습니다.

대체 및 그룹화

대체 및 그룹화는 개발자가 특히 정규식 내에서 복잡한 절을 처리 할 때보다 복잡한 정규식을 생성하는 데 도움이되며 이는 뛰어난 유연성과 제어를 제공합니다.

상징 기술
0 절을 만들기 위해 절을 그룹화합니다. "(xy)? (z)"는 "xyz"또는 "z"와 일치합니다.
| 대체는 하나의 정규식 절을 결합한 다음 개별 절 중 하나와 일치합니다. "(ij) | (23) | (pq)"는 "ij", "23"또는 "pq"와 일치합니다.

정규식 작성

다음은 정규 표현식을 작성하는 방법을 명확하게 설명하는 몇 가지 예입니다.

정규식 기술
"^ \ s * .."및 ".. \ s * $" 한 줄에 임의의 수의 선행 및 후행 공백 문자가있을 수 있음을 나타냅니다.
"((\ $ \ s?) | (# \ s?))?" 선택적 $ 또는 # 기호 다음에 선택적 공백을 나타냅니다.
"((\ d + (\. (\ d \ d)?)?))" 하나 이상의 숫자가 있고 그 뒤에 선택적 소수와 소수 뒤에 두 자리가 있음을 나타냅니다.

아래 예제는 사용자가 이메일 ID 다음에 '@'가 있고 뒤에 도메인 이름이 오는 형식이 일치해야하는 이메일 ID를 입력했는지 여부를 확인합니다.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         strid = "[email protected]"
         Set re = New RegExp
         With re
            .Pattern    = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$"
            .IgnoreCase = False
            .Global     = False
         End With
        
         ' Test method returns TRUE if a match is found
         If re.Test( strid ) Then
            Document.write(strid & " is a valid e-mail address")
         Else
            Document.write(strid & " is NOT a valid e-mail address")
         End If
        
        Set re = Nothing
      </script>
   </body>
</html>