2009-12-20 4 views
0

다음과 같이 우리와 캐나다 우편 번호를 반환하는 정규 표현식이 있습니다.jquery 텍스트 영역에 대한 정규 표현

((?<US>\d{5})|(?<Can>\b[A-Z-[DFIOQUWZ]]\d[A-Z-[DFIOQU]]\ +\d[A-Z-[DFIOQU]]\d\b)) 

자바 스크립트 또는 jquery에서이 작업을 수행해야합니다. 이러한 값만 추출 할 수있는 응용 프로그램입니다. 예를 들어 누군가가 텍스트 영역에 문서를 붙여 넣기 만하고 단추를 클릭 한 다음 올바른 미국 및 캐나다 우편 번호를 추가 처리를 위해 배열로 추출 할 수 있습니다. 나는 보았지만이 요구 사항에 맞는 것을 찾을 수 없습니다.

Waldek Mastykarz의 RegEx 필터를 사용해 보았습니다.

jQuery.extend(
    jQuery.expr[':'], { 
     regex: function(a, i, m, r) { 
      var r = new RegExp(m[3], 'i'); 
      return r.test(jQuery(a).text()); 
     } 
    } 
); 


$("#idTextArea:regex('\d{5}')") US only 

$("#idTextArea:regex('\\d{5}')") also tried this and host of others 

여기서 idTextArea에 대한 textarea 입력은 다음과 같습니다.

"12345 ahdh 23, 6789, 65432" 

배열에 12345 및 65432 만 반환하고 싶습니다.

전적으로 엉망입니다. 도움을 주시면 대단히 감사하겠습니다.

+0

jQuery 플러그인을 사용하지 않고도 달성하려는 작업을 수행 할 수 있습니다. 텍스트 영역에 'onchange' 이벤트를 사용하여 내용을 가져오고 정규 표현식으로 파싱합니다. – kiamlaluno

답변

1

당신 만 String.match 방법을 사용할 필요가, 나 또한 간단한 정규 표현식은 :

function validPostalCodes(input) { 
    var r = /(\d{5}|(\b[A-Z-DFIOQUWZ]\d[A-Z-DFIOQU]\ +\d[A-Z-DFIOQU]\d\b))/g; 
    return input.match(r); 
} 

그런 다음 당신은 당신의 텍스트 영역 값으로 위의 기능을 사용할 수 있습니다 :

var array = validPostalCodes($("#idTextArea").val()); 

그리고 당신은 얻을 것이다 RegExp와 일치하는 값을 포함하는 배열.