2012-08-27 3 views
4

전달 된 텍스트가 유효한 PCRE인지 JS 함수에서 유효성을 검사하기 위해 기존 함수가 있습니까? 나는 미친 듯이 인터넷 검색을 해왔지만, 내가 찾은 가장 근접한 것은 "PCRE 호환성 플래그"인 "PCRE_JAVASCRIPT_COMPAT"또는 PHP와 Javascript 모두에서 입력의 유효성을 검사하는 것에 관한 토론이다.자바 스크립트 함수에서 PHP (PCRE) 유효성 검사

I 자바 스크립트 정규식 검증에 본 적이 가장 가까운 것입니다 : 이것은 JS (ECMA) 사이의 계정의 차이 정규 표현식과 PHP (PCRE) 정규 표현식을 고려하지 않는

try { 
    "".match(regex); 
    return true; 
} catch (e) { 
    return false; 
} 

- 그건 분명히 문제 , 그러나 나는이 둘의 차이에 대한 명확한 토론을 발견하지 못했다.

도움이 필요하십니까?

+0

글쎄, 당신은 JS 작업하는 경우 , PHP와 함께 사용하기 위해 PCRE를 수신하면, 서버. 거기에서 유효성을 검사 할 수 있습니다. PHP에서 시도 할 때 JS에서 유효한 RegExp가 실패한다고 생각하지 않습니다. 둘 다 같은 스타일의 regexp를 사용합니다. – AlvaroGMJ

+0

아, 재미 있습니다. ECMA와 PCRE는 서로 다른 스타일이라고 생각 했나요? 그리고 ** 제공된 정규 표현식이 ** 서버에 제출되기 전에 유효하다는 것을 확인하기 위해 이것을 필요로합니다. 클라이언트 측 검증입니다. – Paul

+1

예, http://www.regular-expressions.info/javascript.html에서 읽을 수 있듯이 JS는 Perl 스타일 정규 표현식의 * 하위 집합 *을 구현합니다. 반면 PCRE는 대부분 전부입니다. PHP는 ereg * 함수에서 "POSIX"정규 표현식을 사용했습니다. 그러나 이들이 사용되지 않으므로 어쨌든 PCRE 기능을 사용해야하며 아무런 문제가 없습니다. – AlvaroGMJ

답변

2

빠른 & 더러운 AJAX 코드

function regexValidator(value) { 
    var req = new XMLHttpRequest(); 
    req.onreadystatechange = function() { 
     if (req.status == 200 && req.responseText.length() > 0) { 
      alert(req.responseText); 
     } 
    }; 
    req.open('GET', 'http://example.com/validator.php?r=' + escape(value), true); 
    req.send(); 
} 

PHP :

<?php 
if (isset($_GET['r'])) { 
    if (preg_match(urldecode($_GET['r']), '') === FALSE) { 
     echo "NOT VALID"; 
    } else { 
     echo "VALID"; 
    } 
} 
+0

응답을 기다리는 방법이 필요했기 때문에 동기식 호출이 끝났지 만 아이디어는 게시 된 것과 유사합니다. – Paul

+1

@Pal 당신은 결코 동기 호출을 필요로하지 않습니다. 그렇게하는 경우 코드에 리팩토링이 필요합니다. –

2

흥미로운 질문입니다. Regex baddass Steven Levithan은 을 작성하여 Javascript 정규식을 구문 분석하고 프로세스에서 부분적으로 (완료되지는 않았지만) 유효성 검사를 수행합니다. 발견 된 구문 오류를 강조 표시합니다. 하지만 PCRE 정규식 맛에 관한 ...

나는 약간 도움이 될지도 모른다 Javascript (GitHub) 프로젝트가있다. 전화 번호는 Dynamic Regex Highlighter입니다. 그룹 및 문자 클래스에 대한 대괄호 일치와 관련하여 PCRE 구문의 유효성을 검사합니다. 그러나 다른 구문 요구 사항은 확인하지 않습니다. 당신이 정규 표현식에 들어가면, 어쨌든 보일만한 가치가있을 것입니다. 나는 비 자유 공간 모드로 작성된 길고 복잡한 정규식 (잘못)을 검사 할 때 테스터 페이지를 매우 유용하다고 생각한다. 대괄호 위로 마우스를 가져 가면 일치하는 대괄호가 강조 표시되고 캡처 그룹 인 경우 그룹 번호가 팝업 도구 팁에 제공됩니다.

참조 :

자바 스크립트 : PHP에 대해 확인 Dynamic Regex Highlighter Tester

관련 문제