| 제목 | 자바스크립트 정규식 질문 | ||
|---|---|---|---|
| 글쓴이 | 토끼와거북 | 작성시각 | 2014/04/07 05:03:23 | 
|  | |||
| 문자열에서 (가) 에서 (차) 까지 해당하는 문자열이 있을 경우 위치를 반환받고자 합니다. 아래 부분에서 '(' 과 ')'는 어떻게 추가해야 할까요? 
text = "(가) 남자의 의복에서 가장 사치스러운 호사가 마고자다. 바지, 저고리, 두루마기 같은 다른 옷보다 더 값진 천을 사용한다. 또 남자 옷에 패물이라면 마고자의 단추다.(나) 나는 마고자를 입을 때마다 한국 여성의 바느질 솜씨를 칭찬한다.(다) 문화의 모든 면이 다 이렇다. 전통적인 안목과 전통적인 솜씨가 있으면 남의 문화가 아무리 거세게 밀려든다 할지라도 이를 고쳐서 새로운 제 문화를 이룩하는 것이다.(라) 마고자는 원래 중국의 마괘자에서 왔다 한다. 이것이 우리나라에 들어와서 마고자가 됐다는 것이다. 그러나 마고자는 마괘자와 비슷도 아니 한 딴 물건이다. 한복에는 안성맞춤으로 어울리는 옷이지만, 중국옷에는 입을 수 없는, 우리의 독특한 옷이다.";
var len = text.length;
for(var i=0; i < len; i++){ 
 if(text.charAt(i).match(/[가-차]/)){
  return i;
 }
} | |||
| 다음글 | 검색 게시판을 작성시.. 문제가 생겼습니다... (4) | ||
| 이전글 | $DOCUMENT_ROOT 로 절대 경로 인식 못할 때... (5) | ||
| 
                                letsgolee
                                /
                                2014/04/07 08:27:19 /
                                추천
                                0
                             | 
| 
                                토끼와거북
                                /
                                2014/04/07 09:54:11 /
                                추천
                                0
                             
                                 역슬래쉬를 이용해 보았는데 먹지 않네요.
                             | 
| 
                                한대승(불의회상)
                                /
                                2014/04/07 10:29:13 /
                                추천
                                0
                             
                                토끼와거북// 다시 한 번 확인해 보세요. \([가-차]\) | 
| 
                                토끼와거북
                                /
                                2014/04/07 11:31:44 /
                                추천
                                0
                             
                                 아래와 같이 하니까 안 되네요. 
<script>
$(function(){
 str_test();
});
function str_test(){
 text = "(가) 고구려 (나) 백제 (다) 신라 (라) 조선";
 var len = text.length;
 
 for(var i=0; i < len; i++){ 
  if(text.charAt(i).match(/\([가-차]\)/)){
   alert(i);
  }
 }
}
</script> | 
| 
                                한대승(불의회상)
                                /
                                2014/04/07 11:57:21 /
                                추천
                                0
                             
                                토끼와거북// 글자를 한자씩 나누면 당연히 안되겠죠.
                             | 
| 
                                letsgolee
                                /
                                2014/04/07 12:27:20 /
                                추천
                                0
                             
                                 [code] var text = "(가) 남자의 의복에서 가장 사치스러운 호사가 마고자다. 바지, 저고리, 두루마기 같은 다른 옷보다 더 값진 천을 사용한다. 또 남자 옷에 패물이라면 마고자의 단추다.(나) 나는 마고자를 입을 때마다 한국 여성의 바느질 솜씨를 칭찬한다.(다) 문화의 모든 면이 다 이렇다. 전통적인 안목과 전통적인 솜씨가 있으면 남의 문화가 아무리 거세게 밀려든다 할지라도 이를 고쳐서 새로운 제 문화를 이룩하는 것이다.(라) 마고자는 원래 중국의 마괘자에서 왔다 한다. 이것이 우리나라에 들어와서 마고자가 됐다는 것이다. 그러나 마고자는 마괘자와 비슷도 아니 한 딴 물건이다. 한복에는 안성맞춤으로 어울리는 옷이지만, 중국옷에는 입을 수 없는, 우리의 독특한 옷이다."; var len = text.length; for(var i = 0; i < len; i++) {     var c = text.charAt(i);     if (c == '(')     {         var s = text.substr(i, 3);         var r = /^\([가-차]\)$/;         if (s.match(r))         {             alert(i);             i = i+3;         }     } } [/code] 한대승님이 언급한 것처럼 charAt은 한 캐릭터만 가져옵니다. 그걸 match할 수는 없지요. | 
| 
                                토끼와거북
                                /
                                2014/04/07 12:58:11 /
                                추천
                                0
                             
                                letsgolee 님 정상 작동합니다. 감사드립니다.^^
                             | 
| 
                                도라에몽
                                /
                                2014/04/07 13:04:05 /
                                추천
                                0
                             
                                꼭 위치를 반환 받아야 하는것이 아니라면.. 아래처럼 하는건 어떨까요?. ^^;  
var text = "(가) 고구려 (나) 백제 (다) 신라 (라) 조선";
$(function(){
 var str_arr = str_test();
 console.log(str_arr);
});
function str_test(){
 var pattern = /\([가-차]\)/;
 var arr = text.split(pattern);
 return arr;
} | 
| 
                                토끼와거북
                                /
                                2014/04/07 20:45:50 /
                                추천
                                0
                             
                                브라이언님이 알려 준 방식이 더 간편하네요. 원래 목적은 패턴값으로 문자열을 잘라내는 것이었거든요.  알려주셔서 감사드립니다.^^ | 
[code]
.match(/\([가-차]\))
[/code]