javascript - 정규 표현식 > JavaScript

본문 바로가기

사이트 내 전체검색

뒤로가기 JavaScript

javascript - 정규 표현식

페이지 정보

작성자 최고관리자 작성일 21-02-10 17:38 조회 8,566 댓글 0

본문

출처 : http://linuxism.tistory.com/745



 ##############  정규표현식

1. 확장문자 (: backslash)
    - s : 공백 문자(스페이스, 탭, 폼 피드, 라인 피드)

    - b : 단어의 경계
    - B 이를 제외한 모든 문자 매칭

    - d : 숫자
    - D : 숫자가 아닌 문자 [^0-9] 와 동일

    - w : 알파벳, 숫자로 된 문자, 밑줄 기호(_) [A-Za-z0-9]
    - W : w의 반대 문자 [^A-Za-z0-9]

    - 특수문자 : 특수문자 자체를 의미 예) + (+ 기호 자체)

2. 특수문자
    - * : 0회 이상 반복
    - + : 1회 이상 반복
    - ? : 0 또는 1개의 문자 매칭
    - . : 정확히 1개 문자 매칭

3. 플래그
    - g : 전역매칭
    - i : 대소문자 무시
    - m : 여러 줄 매칭

4. 기타
    - () : 괄호로 묶인 패턴은 매칭된 다음, 그 부분을 기억한다.
    - $1,...,$9 : 괄호로 갭처한 부분 문자열이 저장 됨.
    - | : ~또는~
    - {} : 반복 횟수


##############  간단한 정규 표현식
var re = /a/        --a 가 있는 문자열
var re = /a/i        --a 가 있는 문자열, 대소문자 구분 안함
var re = /apple/    -- apple가 있는 문자열
var re = /[a-z]/    -- a~z 사이의 모든 문자
var re = /[a-zA-Z0-9]/    -- a~z, A~Z 0~9 사이의 모든 문자
var re = /[a-z]|[0-9]/  -- a~z 혹은 0~9사이의 문자
var re = /a|b|c/  --  a 혹은 b 혹은 c인 문자
var re = /[^a-z]/  -- a~z까지의 문자가 아닌 문자("^" 부정)
var re = /^[a-z]/  -- 문자의 처음이 a~z로 시작되는 문장
var re = /[a-z]$/  -- 문자가 a~z로 끝남


 상기에 정의된 간단한 표현식을 아래에 넣어 직접 해 보시기 바랍니다.
var str = "sample string";
 re.test(str)?"true":"false";

 * 특수문자('''', ''^'', ''$'', ''*'', ''+'', ''?'', ''.'', ''('', '')'', ''|'', ''{'', ''}'', ''['', '']'')를 검색할 경우는 '''' 를 넣는다.



 ##############  간단한 응용예제


var re = /s$/;          -- 공백체크
var re = /^ss*$/;  -- 공백문자 개행문자만 입력 거절
var re = /^[-!#$%&'*+./0-9=?A-Z^_a-z{|}~]+@[-!#$%&'*+/0-9=?A-Z^_a-z{|}~]+.[-!#$%&'*+./0-9=?A-Z^_a-z{|}~]+$/; --이메일 체크
var re = /^[A-Za-z0-9]{4,10}$/ -- 비밀번호,아이디체크 영문,숫자만허용, 4~10자리
var re = new RegExp("(http|https|ftp|telnet|news|irc)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)","gi") -- 홈페이지 체크

var re = "<[^<|>]*>";  -- 태그제거
var re = /[<][^>]*[>]/gi;-- 태그제거
str = str.replace(RegExpTag,""); 

 var RegExpJS = "<script[^>]*>(.*?)</script>";  -- 스크립트 제거 
str = str.replace(RegExpJS,""); 

 var RegExpCSS = "<style[^>]*>(.*?)";  -- 스타일 제거 
str = str.replace(RegExpCSS,""); 

 var RegExpHG = "[ㄱ-ㅎ가-힣]";  -- 한글 제거 
str = str.replace(RegExpHG,""); 

 var RegExpDS = /<!--[^>](.*?)-->/g;  -- 주석 제거 
str6 = str.replace(RegExpDS,""); 

 var regExp = /[a-z0-9]{2,}@[a-z0-9-]{2,}.[a-z0-9]{2,}/i; --이메일 체크


## 기타 응용
re = new RegExp("^@[a-zA-Z0-9]+s+","i");//문장의 처음이 @이고 문자가 1나 이상 있으면 ok



기타 상기와 동일하나 약간씩 다른 샘픔
 영숫자 조합책크
if ((new RegExp(/[^a-z|^0-9]/gi)).test(frm.loginid.value)) {
    alert("ID는 영숫자 조합만 사용하세요");
    frm.loginid.focus();
 }

홈페이지 주소 책크
function chk(v){
  str='';
  re = new RegExp("^http://","i"); 
  re.test(v)?str='y':str='n';
  alert(str);
}

 hanmail인지를 책크
function chk(v){
  str='';
  re = new RegExp("hanmail.net","i"); 
  re.test(v)?str=true:str=false;
  return str
}

 //본문내에서 도메인 구하기
var patt = /(http(s)?://)?w+(.w+)+/gi;
      var result = (aa.value.match(patt));

 //본문내에서 url구하기
 상기와 유사 var patt = /(http(s)?://)?w+(.w+).S*/gi;

 ########### 정규식 메소드 및 사용법

 참조 http://eknote.tistory.com/1251
참조 http://www.javascriptkit.com/javatutors/redev3.shtml
 RegExp.exec(string)
 RegExp.test(string)
 String.match(pattern)
 String.search(pattern)
 String.replace(pattern,string)
 String.split(pattern)

출처 - http://www.shop-wiz.com/board/main/view/root/javascript2/16



 ===============================================================================

 1. 만들기

1)

 var re=/패턴/플래그;


2)

 var re=new RegExp("패턴","플래그");


3) 차이 - new로 만들때에는 이스케이프문자는 \는 \\로 해주어야 한다.

    var re=/\w/;
    var re=new RegExp("\\w");



 2. 플래그(flag)

•g (Global 찾기) 패턴에 맞는 모든문자 찾기
•i (Ignore Case) 대소문자 무시
•m (Multiline) 여러줄
3.

•^ 문자열의 시작을 의미 ,m 플래그를 사용할경우 경우는 각 문자열의 시작
•$ 문자열의 끝을 의미 ,m 플래그를 사용할경우 경우는 각 문자열의 끝
•. 모든 한문자
4.

•    [문자들]  - 괄호안의 문자 하나와 매치
        예) [abc] 는 a나 b나 c중 하나를 의미


•    [^문자들] - 괄호안의 문자가 아닌문자와 매치
        예) [^abc] 는 1,2.... d,e.... 등과 매치


•    [문자1-문자2] - 문자1과 문자2와 그 사이의 값과 매치
      예) [a-d] a,b,c,d와 매치   

5. (abc) abc와 매치

6. |
    좌우 패턴중 하나를 의미
        예) (abc|def) abc나 def를 의미

7. *, +, ?
        *  앞의 패턴이 0회 또는 그 이상반복됨
        +  앞의 패턴이 1회 또는 그 이상반복됨
        ?  앞의 패턴이 0또는 1회 반복

8. {n}, {n,}, {n,m} 패턴의 반복회수

    예)
        (abc){1,3} abc가 1에서 3회 반복
        (abc){1} abc가 1회반복
        (abc){,10} abc가 10회 이하 반복



9. 특수문자 (Escapes Character)


 \ 일반문자에 \을 붙여서 특수한 용도로 사용한다.
 \f 폼피드(?)
 \r 캐리지리턴
\n 새줄
\t 일반 탭문자
\v 세로 탭문자(?)
 \0 NUL널문자
[\b] 백스페이스
\s 공백문자
    \f, \n, \r, \t, \v, \u00A0, \u2028, \u2029
 \S 공백이아닌문자
\w 알파벳문자,숫자,_ [a-zA-Z0-9_]
 \W 알파벳문자,숫자,_가 아닌문자 [^a-zA-Z0-9_]).
 \d 정수(short for [0-9]).
 \D 정수가 아닌 문자 (short for [^0-9]).
 \b 단어의 경계 공백,새줄.
 \B 경계가 아닌문자.
 \cX 컨트롤+문자 E.g: \cm matches control-M.
 \xhh 핵사코드
\uhhhh 유니코드


 복잡한 사용방법이 있고 여러 특수문자와의 조합으로 배우기가 쉽지 않아 간단한 예제를 통해 설명한다.


1. 각 문자와 숫자는 해당 문자 또는 문자열이 테스트할 문자열에 있을경우 true 가된다.

 <script>
 // 'a' 가 있는 문자열 모두가 TRUE (대소문자 구분)
var filter = /a/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>



 <script>
 // "about" 가 있는 문자열 모두가 TRUE (대소문자 구분)
var filter = /about/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>

 2. 대소문자 구분없이 해당 문자 또는 문자열을 검색할 경우 끝에 i 를 붙인다.

 <script>
 // 'a' 또는 'A' 가 있는 문자열 모두가 TRUE (대소문자 구분 안함)
var filter = /a/i
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>

 3. 여러개의 이어지는 내용들을 검색할 경우는 '-' 를 넣어 표현한다.

 <script>
 // 'a' 에서 'z' 까지중 하나만 있으면 모두가 TRUE (대소문자 구분)
var filter = /[a-z]/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>


 4. 여러가지의 문자 또는 문자열을 검색할 경우 '|' 를 넣는다.

 <script>
 // 'a' 또는 'b' 또는 'c' 가 있는 문자열 모두가 TRUE (대소문자 구분)
var filter = /a|b|c/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>



 <script>
 // 'a' 에서 'z' 까지 또는 '0' 에서 '9' 까지중 하나만 있으면 모두가 TRUE (대소문자 구분)
var filter = /[a-z]|[0-9]/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>


 5. 해당 문자또는 문자열이 없는 경우를 검색할 경우 브래킷('[', ']') 안에 '^' 를 넣는다.

 <script>
 // 'a' 에서 'z' 까지의 문자가 아닌 문자가 있을 경우 TRUE (대소문자 구분)
var filter = /[^a-z]/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>

 6. 문자열의 첫번째 글자가 일치해야할 경우는 '^' 를 브래킷('[', ']') 밖에 넣는다.

 <script>
 // 'a' 에서 'z' 까지의 문자로 시작하는 문자열일 겨우 TRUE (대소문자 구분)
var filter = /^[a-z]/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>


 7. 문자열의 끝쪽 글자가 해당 문자 또는 문자열과 일치해야할 경우는 '$' 를 넣는다.

 <script>
 // 'a' 에서 'z' 까지의 문자로 끝나는 문자열일 겨우 TRUE (대소문자 구분)
var filter = /[a-z]$/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>


 8. 특수문자('', '^', '$', '*', '+', '?', '.', '(', ')', '|', '{', '}', '[', ']')를 검색할 경우는 '' 를 넣는다.

 <script>
 // '' 가 있는 문자열일 겨우 TRUE (대소문자 구분)
var filter = /\\/
 if (filter.test("some test words") == true) { alert("ok"); } else { alert("fail"); }
 </script>



출처 - http://iamnotokay.tistory.com/26



 --================================================================================






 --------------------------------------------------------------------------------







이메일 체크 정규식
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;


핸드폰번호 정규식
/^\d{3}-\d{3,4}-\d{4}$/;


일반 전화번호 정규식
/^\d{2,3}-\d{3,4}-\d{4}$/;


아이디나 비밀번호 정규식
/^[a-z0-9_]{4,20}$/;


 var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;


 if ( !regExp.test( document.frm.hp.value ) ) {
      alert("잘못된 휴대폰 번호입니다. 숫자, - 를 포함한 숫자만 입력하세요.");
      return false
 }




출처 - http://skystory.kr/597

댓글목록 0

등록된 댓글이 없습니다.

Copyright © beautipia.co.kr. All rights reserved.

contact : webmaster@beautipia.co.kr

PC 버전으로 보기