2012-04-13 1 views
1

서버 측 유효성 검사에 preg_match를 사용했지만 클라이언트 측에도 갖고 싶습니다. 내 PHP를 들어흰색 문자 목록에 match()를 사용하려면 어떻게해야합니까?

나는 그 문자 수 :

'/^[A-Za-z][a-zA-Z0-9 .:-,!?]+$/' 

이 어떻게 자바 스크립트에서 match()와 문자의 화이트리스트를 만들 것? 편집

:

나는이 시도하지만 어떤 이유로 작동하지 않았다 : 바로 if 문 전에

내 디버거는 말한다 :

218SyntaxError: Invalid regular expression: range out of order in character class

$('#title').blur(function(){ 
     input = $('#title').val(); 
     var invalidChars = /^[^a-z][^a-z\d .:-,!?]+$/i; 
    if (!invalidChars.test(input)){ 
     alert('true');  
     } 
     else { 
      alert('false'); 
      } 
}); 
+0

호기심에서 벗어난 이유는 무엇입니까? (편지로 시작해야하는 데이터는 무엇입니까? 그렇지만 공간이나 느낌표를 허용하는 다양한 데이터를 사용할 수는 있지만 밑줄은 사용할 수 없습니까?) – Phrogz

+0

안녕하십니까. 그것은 광고의 제목이며, 사용자는 게시해야합니다. 나는 지금 당장 암호를 시험 중이다. 감사합니다 – eric01

답변

2
var validChars = /^[a-z][a-z\d .:\-,!?]+$/i; 
if (validChars.test(myText)){ ... } 

regex.test(str)을 사용하면 str.match(regex)보다 약간 더 성능이 좋지만 일치하는 항목이 있는지 여부 만 알면됩니다.

또는, 당신은 어떤 잘못된 문자를 일찍 볼 수있는 경우 :

var invalidChars = /^[^a-z][^a-z\d .:\-,!?]+$/i; 
if (!invalidChars.test(myStr)){ 
    // we passed 
} 

이것은 정규식 테스트가 허용되지 않는 문자를 보는 순간을 중지 할 수 있습니다. 대신 [A-Za-z]를 작성하는 간단한 /[a-z]/i이 충분합니다 : 그냥 사이드 노트 불구하고,

var regexp = /^[A-Za-z][a-zA-Z0-9 .:-,!?]+$/; 

if (regexp.test(text)) { 


} 
+0

안녕하십니까. 내 코드를 게시했습니다. 무엇이 잘못되었는지 알고 있으면 알려주세요. 고맙습니다. – eric01

+0

Woops; 두 번째 문자 집합에서 리터럴 하이픈을 의미한다고 가정하면 이스케이프 처리해야합니다 (또는 집합의 마지막 요소로 사용해야 함). 나는 내 코드를 적절히 편집했다. – Phrogz

+0

정말 고마워요! 감사합니다 – eric01

2

시도를 다음

var text = ...; 
if (text.match(/^[A-Za-z][a-zA-Z0-9 .:-,!?]+$/)) { 
... 
} 
+0

안녕하세요, 귀하의 회신에 감사드립니다. 하이픈은이 코드에서 문제를 일으키지 만 이스케이프 후에는 하이픈이 작동합니다. 고마워요. – eric01

2

사실은 그 반대입니다. i은 대소 문자를 구분하지 않습니다.

+0

안녕하세요, 귀하의 회신에 감사드립니다. 하이픈은이 코드에서 문제를 일으키지 만 이스케이프 후에는 하이픈이 작동합니다. 고마워요. – eric01

+0

하이픈을 이스케이프하는 대신 [] 클래스의 맨 끝에 위치 시키십시오. [a-zA-Z0-9 :,!? -] 그런 식으로 처리되지 않습니다. 범위 연산자로. –

3

위의 모든 답변이 올바른지 :

+0

팁 주셔서 감사합니다! 문안 인사 – eric01

관련 문제