본문 바로가기

Javascript

정규표현식

4. 정규표현식

- 정규 표현(Regular Expressions)은 문자열 검색, 바꾸기, 데이터 유효성 체크를 할 수 있는 일련의 과정을 일컫는다.

- javascript는 IE4.0, NC4.0 이상에서 사용할 수 있다.

- javascript에서 정규 표현 방법에는 정규표현 문자를 사용하는 방법과 RegExp 오브젝트의 생성자 함수를 호출하는 두 가지 방법이 있다.

- 텍스트 문자(a,b,c)는 literal 문자라고 하고 , 특수문자를 Meta(^,$) 문자라고 한다.

ex)

var word = 'My Name is Rainbow-Green';

var pattern = /^m/i;

function execute() {

alert( word.match(/Green/) );   // 텍스트 문자 패턴

alert( word.match(/^M/) );      // 특수 문자 패턴

alert( pattern.test(word) );       // 고정된 패턴의 사용

var regExp = new RegExp( '^M', 'i');  // RegExp 오브젝트를 사용

alert(  regExp.exec(word) );

}

   Test Click Here !


  - 정규 표현 메소드

오브젝트 | 메소드   | 설명

String      | match   |  문자열을 검색해서 매치가 되면 배열을 반환하고 아니면 null 을 반환

     | replace |  문자열을 검색해서 매치된 문자열을 치환

     | search  | 문자열을 검색해서 매치된 인덱스를 반환, 매치되지 않으면 1을 반환

     | split      | 정규 표현 또는 문자열을 사용하여 검색 대상 문자열을 분할하고 배열화 한다.

RegExp   | exec     | 문자열을 검색해서 매치가 되면 배열을 반환하고 아니면 null을 반환

              | test       | 문자열을 검색해서 매치가 되면 true, 아니면 false를 리턴한다.

i,g,m 변경자

i : ignoreCase, 대소문자를 구분하지 않고 검색, 매치되면 더 이상 검색하지 않고 매치된 문자열을 반환

g : global, 문자열에서 패턴과 매치되는 모든 문자열을 배열로 반환

m : multiline, 문자열이 복수 라인으로 구성된 경우 전체 라인을 검색


문자 :  설명

\ : 다음에 오는 문자를 특수 문자나 리터럴로 표시합니다. 예를 들어, "n"은 문자 "n"과 일치합니다. "\n"은 줄 바꿈 문자와 일치합니다. 시퀀스 "\\"은 "\"와 같고, "\("는 "("와 같습니다.
^ : 입력의 시작 부분을 찾습니다.
$ : 입력의 끝 부분을 찾습니다.
* : 앞에 오는 문자를 0번 이상 찾습니다. 예를 들어, "zo*"를 입력하면 "z" 또는 "zoo"를 찾습니다.
+ : 앞에 오는 문자를 1번 이상 찾습니다. 예를 들어, "zo+"를 입력하면 "zoo"를 찾지만 "z"는 여기에 포함되지 않습니다.
? : 앞에 오는 문자를 0번 이상 찾습니다. 예를 들어, "a?ve?"를 입력하면 "never"에 있는 "ve"를 찾습니다.
. : 줄 바꿈 문자를 제외한 단일 문자를 찾습니다.
(pattern) : pattern을 찾고 일치하는 내용을 기억합니다. 일치하는 부분 문자열은 Item [0]...[n]을 사용하여 결과로 나오는 Matches 컬렉션에서 검색할 수 있습니다. 괄호 문자 ( )를 찾으려면 "\(" 또는 "\)"를 사용합니다.
x|y : x 또는 y를 찾습니다. 예를 들어, "z|food"는 "z" 또는 "food"를 찾습니다. "(z|f)ood"로는 "zoo"나 "food"를 찾을 수 있습니다.
{n} : n은 음이 아닌 정수입니다. 정확하게 n번 일치하는 부분을 찾습니다. 예를 들어, "o{2}"는 "Bob"의 "o"를 찾지 않지만 "foooood"의 처음 두 o를 찾습니다.
{n,} : n은 음이 아닌 정수입니다. 적어도 n번 일치하는 부분을 찾습니다. 예를 들어, "o{2,}"는 "Bob"의 "o"를 찾지 않지만 "foooood"의 o는 모두 찾습니다. "o{1,}"은 "o+"와 같습니다. "o{0,}"은 "o*"과 같습니다.
{n,m} : m과 n은 음이 아닌 정수입니다. 최소 n번, 최대 m번 일치하는 부분을 찾습니다. 예를 들어, "o{1,3}"은 "fooooood"의 처음 세 o를 찾습니다. "o{0,1}"은 "o?"와 같습니다.
[xyz] : 문자 집합입니다. 괄호 안의 문자 중 하나를 찾습니다. 예를 들어, "[abc]"는 "plain"의 "a"를 찾습니다.
[^xyz] : 문자 집합에 없는 문자를 찾습니다. 괄호 안에 있지 않은 문자 중 하나를 찾습니다. 예를 들어, "[^abc]"는 "plain"의 "p"를 찾습니다.
[a-z] : 문자 범위입니다. 지정한 범위에 있는 문자 중 하나를 찾습니다. 예를 들어, "[a-z]"는 "a"에서 "z"까지의 알파벳 소문자를 찾습니다.
[^m-z] : 지정한 문자 범위가 아닌 집합입니다. 지정한 범위에 있지 않은 문자 중 하나를 찾습니다. 예를 들어, "[m-z]"는 "m"에서 "z"까지에 없는 문자를 찾습니다.
\b : 단어의 경계, 즉 단어와 공백 사이의 위치를 찾습니다. 예를 들어, "er\b"는 "never"의 "er"를 찾지만 "verb"의 "er"는 찾지 않습니다.
\B : 단어의 경계에 있지 않은 문자를 찾습니다. "ea*r\B"는 "never early"의 "ear"을 찾습니다.
\d : 숫자를 찾습니다. [0-9]와 같습니다.
\D : 숫자가 아닌 문자를 찾습니다. [^0-9]와 같습니다.
\f : 용지 공급 문자를 찾습니다.
\n : 줄 바꿈 문자를 찾습니다.
\r : 캐리지 리턴 문자를 찾습니다.
\s : 공백, 탭, 용지 공급 등 모든 종류의 공백 문자를 찾습니다. "[ \f\n\r\t\v]"와 같습니다.
\S : 공백 문자가 아닌 문자를 찾습니다. "[^ \f\n\r\t\v]"와 같습니다.
\t : 탭 문자를 찾습니다.
\v : 세로 탭 문자를 찾습니다.
\w : 밑줄을 포함한 모든 단어 문자를 찾습니다. "[A-Za-z0-9_]"와 같습니다.
\W : 단어가 아닌 문자를 찾습니다. "[^A-Za-z0-9_]"와 같습니다.
\num : num을 찾습니다. 여기서 num은 양의 정수입니다. 이전에 참조한 값을 다시 참조합니다. 예를 들어, "(.)\1"은 연속적으로 같은 문자가 두 번 나오는 것을 찾습니다.
\n : n을 찾습니다. 여기서 n은 8진 제어 값입니다. 8진 제어 값은 1, 2, 3 자리 중 하나라야 합니다. 예를 들어, "\11"과 "\011"은 모두 탭 문자를 나타내지만 "\0011"은 "\001" & "1"과 같습니다. 8진 제어 값은 256을 넘을 수 없습니다. 이 값이 256을 넘는 경우에는 처음 두 자릿수 만이 식을 구성합니다. 정규식에 ASCII 코드를 사용할 수 있습니다.
\xn : n을 찾습니다. 여기서 n은 16진 제어 값입니다. 16진 제어 값은 정확히 두 자리이어야 합니다. 예를 들어, "\x41"은 "A"에 해당하지만 "\x041"은 "\x04" & "1"과 같습니다. 정규식에 ASCII 코드를 사용할 수 있습니다.