2011-09-13 4 views
7

http://regexlib.com/ 정규식을 사용하여 양식의 유효성을 검사하려고합니다. 내가하려는 것은 a-z, 쉼표 및 아포스트로피를 제외한 모든 문자를 필터링하는 것입니다. 이 코드를 사용하는 경우 :정규식에서 아포스트로피를 이스케이프?

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z'-]+)$" /> 

다음과 같은 오류가 나타납니다. 표현식에서 일치하지 않는 [].

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z-]+)$" /> 

그래서 내가 궁금하네요 정규 표현식을 사용하는 경우 어포 스트로피를 탈출하는 특별한 방법이 : 나는이 코드를 사용하는 경우 작동합니다 (그러나 아포스트로피를 허용하지 않는) 때문에이 아포스트로피 관련 알아 냈어?

편집

내가 문제가 (xanatos 덕분에) 발생되는 위치 내가 찾은 것 같아, 그것을 해결하는 방법을 잘. 기본적 CF는 다음과 같은 필드를 검증 숨겨진 필드를 생성한다 :

<input type='hidden' name='FirstName_CFFORMREGEX' value='^([a-zA-Z'-]+)$'> 

를 그 값 둘레 단일 어포보다는 음성 마크를 사용하고 있기 때문에, 그 값의 단부와 아포스트로피를 해석한다.

+0

아포스트로피가 특수 문자와 함께 접두사에 의해 표준 텍스트에서 탈출해야합니다 (이 작은 따옴표에 대한 코드의) : 그래서 그것을 변환 \ ', 시도 패턴 = "^ ([a-zA-Z \'-] +) $"HTH – John

+1

@ 존 정말인가요? 그리고 그것은 무엇을 의미합니까? Regex "언어"에서 어떻게 사용됩니까? – xanatos

+0

'try'라고 말하면 확실하지 않습니다. regex에는 많은 맛이 있으며, 태그가 지정된 표현식을 바꾸는 것은 실제로 Word 2002 프로그램에서 빠져 있습니다. – John

답변

7

나는 cfinput 구현에 버그가 있다고 생각합니다. 그것은 아마도 자바 스크립트 정규식에서 패턴으로 전달하는 문자열을 사용하지만 '을 사용하여 인용합니다. '

new Regex('^([a-zA-Z'-]+)$') 

\x27으로 견적을 교체 시도가

+0

그 xanato에 감사드립니다, 불행히도 그 중 하나를 작동하지 않습니다. Javascript 유효성 검사는 실제로 원본에서 올바르게 작동하지만 문제가있는 서버 측 유효성 검사입니다. 더 이상이 작업을하지 않으면 서버 측에서 직접 유효성을 검사 해 볼 수 있습니다. – Kristian82

+0

@ Kristian82이 하나를 사용해보십시오 :-) – xanatos

+1

내 의견은 이제 말이되지 않습니다. 덕분에 많은 ... – Kristian82

0

하이픈은 주변의 두 문자 사이의 범위를 의미하기 때문에 하이픈이 처리됩니다. 처음에는 하이픈을 모범 사례로 사용하십시오.

^([-a-zA-Z']+)$ 
+2

끝까지 두는 것은 좋은 습관입니다. 차이점은 없습니다. – stema

관련 문제