Notice
Recent Posts
Recent Comments
Link
기린의 기록을 위한 공간
[JavaScript] 정규표현식 본문
[정규표현식]
정규표현식을 생성하는 방법
1. RegExp객체를 생성자로 생성 -> new RegExp("정규표현식");
2. /정규표현식/
var regExp = new RegExp('script'); // 객체를 생성 - script단어를 찾아라
regExp = new RegExp(/script/);
var regExp2 = /script/;
var str = "javascript jquery ajax";
//문자열을 정규표현식과 비교하여 확인하려면
//RegExp객체의 함수를 이용함.
//test() : 정규표현식에 해당이 되면 true, 아니면 false
//exec() : 정규표현식에 해당이 되면 해당되는 문자를 출력,없으면 null
var doc = document.getElementById('area');
doc.innerHTML+="비교대상문자 : "+str+"<br>";
doc.innerHTML+="정규표현식과 비교 test() : "+regExp.test(str)+"<br>"; //true
doc.innerHTML+="정규표현식과 비교 exec() : "+regExp.exec(str)+"<br>"; //해당되는 문자 script 출력
//String 객체에서도 비교가 가능
//match() : 일치하는 문자를 배열로 반환
//replace() : 일치하는 문자를 변환
//search() : 일치하는 문자의 시작 인덱스를 반환
//배열로 반환해서 0번인덱스를 출력함
doc.innerHTML+="String.match() : "+str.match(regExp)+"<br>"; //일치하는 인덱스 script 출력
doc.innerHTML+="String.replace() : "+str.replace(regExp2,"스크립트")+"<br>"; //java 스크립트 jquery ajax
doc.innerHTML+="String.search() : "+str.search(regExp2)+"<br>"; // 4
[대체문자로 변환해주는 표현]
$& : 제일처음 일치하는 문자열 -> 그 문자열 자체
$` : 매칭된 문자열의 앞 문자열
$' : 매칭된 문자열의 뒤 문자열
<button onclick="testStr();">실행</button>
<div id="area2"></div>
<script>
function testStr(){
var doc = document.getElementById("area2");
var regExp = /as/;
var str = "javascript jquery ajax sass";
// $& : jav(as)cript jquery ajax sass
doc.innerHTML+="$& : "+str.replace(regExp,"($&)")+"<br>";
// $& : jav(as)cript jquery ajax sass
doc.innerHTML+="$` : "+str.replace(regExp,"($`)")+"<br>";
// $' : jav(cript jquery ajax sass)cript jquery ajax sass
doc.innerHTML+="$' : "+str.replace(regExp,"($')")+"<br>";
}
[플래그문자]
정규표현식을 작성할 때 /정규표현식/flag를 작성함
문자열 검색에 대한 옵션을 의미한다
g : 전역비교수행 -> 한개찾고 끝나는것이 아니라 전체를 검색하는 것
i : 대소문자 구별없이 찾기
m : \n(개행)을 문장의 시작을 보고 찾기
<button onclick="test();">옵션 실행</button>
<div id="area3"></div>
<script>
function test(){
var reg=/a/;
var reg2=/a/g;
var reg3=/a/gi;
var str = "Javascript Jquery Ajax";
var doc = document.getElementById("area3");
doc.innerHTML+="기본 : "+str.replace(reg,"-$&-")+"<br>";
doc.innerHTML+="g옵션 : "+str.replace(reg2,"-$&-")+"<br>";
// a 대소문자 다찾음
doc.innerHTML+="i옵션 : "+str.replace(reg3,"-$&-")+"<br>";
var reg4 = /^j/gi;
var reg5 = /^j/gim;
var str2 = str.replace(" ","\n");
doc.innerHTML+="m전 : "+str2.replace(reg4,"-$&-")+"<br>";
doc.innerHTML+="m후 : "+str2.replace(reg5,"-$&-")+"<br>";
기본 : J-a-vascript Jquery Ajax
g옵션 : J-a-v-a-script Jquery Aj-a-x
i옵션 : J-a-v-a-script Jquery -A-j-a-x
m전 : -J-avascript Jquery Ajax
m후 : -J-avascript -J-query Ajax
}
[정규표현식 메타문자 활용하기]
^ : 문자열의 맨앞에 오는 문자를 찾는것
$ : 문자열의 맨끝에 오는 문자를 찾는것
<button onclick="test2();">^ $문자 확인</button>
<div id="area4"></div>
<script>
function test2(){
//앞글자 확인
var reg = /^j/g;
var reg2 = /y$/gm;
var str = "javascript jquery ruby Ajax"
var str2 = "aavascript jquery ruby"
var doc = document.getElementById("area4");
doc.innerHTML+="^j : "+str.replace(reg,'-$&-')+"<br>";
//문장의 첫시작이 a이기때문에 아무것도 못찾음
doc.innerHTML+="^j : "+str2.replace(reg,'-$&-')+"<br>";
doc.innerHTML+="y$ : "+str2.replace(reg2,'-$&-')+"<br>";
var str3 = "javascript\njquery\nruby\nAjax"
doc.innerHTML+="y$ : "+str3.replace(reg2,'-$&-')+"<br>";
}
^j : -j-avascript jquery ruby Ajax
^j : aavascript jquery ruby
y$ : aavascript jquery rub-y-
y$ : javascript jquer-y- rub-y- Ajax
</script>
[포인트]
임의의 한글자 / 자리수 한자리를 차지하는 것
<button onclick="test3();">실행</button>
<div id="area5"></div>
<script>
function test3(){
var reg = /a..b/; //a와b사이에 두자리수만 찾는다
console.log("ab : "+reg.test('ab')); //일치하는것 없어서 false
console.log("a아ba01b : "+reg.exec('a아ba01b')); //a..->a다음 두자리수다음것 출력 a01b
console.log("a아싸싸b : "+reg.test('a아싸싸b')); //a와b사이에 세자리가 있어서 false
console.log("aq b : "+reg.test('aq b'));//true
}
</script>
[괄호]
한문자, 묶음안의 내용의 범위를 나타냄 -> 또는 | 으로 표시
예) [abc] -> a또는 b또는 c == a|b|c
<button onclick="test4();">실행</button>
<script>
function test4(){
var reg = /[aj]/gi;
var reg2 = /[^aj]/gi;
var str = 'Javascript jquery Ajax';
console.log("========/[aj]/gi=======")
console.log(str.replace(reg,"-$&-")); -J--a-v-a-script -j-query -A--j--a-x
console.log(str.replace(reg2,"-$&-")); Ja-v-a-s--c--r--i--p--t-- -j-q--u--e--r--y-- -Aja-x-
//[]안에 -표시로 범위로 설정
reg = /[a-z]/g; //소문자 a~z까지 찾아라
reg = /[A-Z]/g; //대문자 A~Z까지 찾아라
//대소문자 전체 //알파벳 전체
reg = /[a-zA-Z]/g;
//숫자
reg = /[0-3]/g;
str+='DVFD1DF3DFD';
console.log(str.replace(reg,"-$&-")); Javascript jquery AjaxDVFD-1-DF-3-DFD
</script>
'Programming > JavaScript' 카테고리의 다른 글
[jQuery] 비슷한 id를 가진 태그 찾기 (0) | 2020.12.28 |
---|---|
[JavaScript] alert / confirm / prompt (0) | 2020.03.17 |
[JavaScript] 클로저 closure (0) | 2020.02.17 |
[JavaScript]리턴 return (0) | 2020.02.17 |
[JavaScript] 함수 (0) | 2020.02.17 |
Comments