var str=$("#mesgCont").val();
//스크립트/스타일 제거
var RegExpJS = new RegExp("(<script[^>]*>(.|[\\s\\r\\n])*<"+"/script>|<style[^>]*>(.|[\\s\\r\\n])*<"+"/style>)", "gim");
str = str.replace(RegExpJS,"");
//태그 제외
var RegExpTag = new RegExp("<[^<|>]*>", "gim");
str = reqlaceAll(str, RegExpTag, "");
//주석 제거
var RegExpDS = /<!--[^>](.*?)-->/g;
str = str.replace(RegExpDS,"");
function reqlaceAll(str, reg, rep){
var strOld = str;
while(true){
str = str.replace(reg, rep);
if(strOld == str) break;
strOld = str;
}
return str;
}
언어마다 정규식 표현방식이 다르다.
특히 Javascript의 경우, RegExp라는 function을 사용하여 만든다. ( 물론 사용하지 않고도 만들 수 있다. 하지만 Syntax Error 를 경험하게 될것이다.)
기본적인 문법은 다음과 같다.
1
2
3
4
5
6
7
8
9
10 |
/** * 1.권장하는 방법.. **/ var regExp = new RegExp(pattern,modifiers); //또는. /** * 2.같은 정규식을 만들더라도..Syntax Error가 많이 발생하는 것을 경험했다. **/ var regExp = /pattern/modifiers; |
1번방법을 이용하여, 주석을 제거하는 정규식을 만들어 보겠다.("//" 에 해당하는 주석만 삭제된다.)
1
2
3
4
5
6
7
8
9
10
11 |
/** * "//"로 시작하고, "\n"(줄바꿈)으로 끝나는 글자(문장?)를 찾는다. * modifier로 gm 을 지정. g 는 global(전체검색), m은 multiline(여러줄 찾기) */ var regExp = new RegExp( "//.*\n" , "gm" ); /** * 그리고 제거하고자 하는 String value의 replace를 사용하면된다. * trim은 양 끝의 공백, 줄바꿈 등을 제거하기 위해 사용. * str은 임의의 문자. */ str = str.replace(regExp, "" ).trim() |
위의 코드대로 검색하면, "//"에 해당하는 주석은 모두 제거된다.
"/* */"도 제거하는 코드는 다음에....업데이트.,,