2014-04-11 8 views
0

텍스트 필드에서 알파벳 문자의 유효성을 검사해야합니다. 내가 지금하는 것은 잘 작동하지만 붙잡음이있다. 나는 악센트 부호가있는 문자 (예 : āēīūčļ)를 허용해야하며, 라트비아어 키보드에서는 작은 따옴표 ('c -> č)를 먼저 입력하면된다. 따라서 유효성 검사기가 실패한다. 사용자는 싱글 쿼트를 입력하고 숫자와 같이 허용되지 않는 문자를 입력하여 '1'을 얻습니다.coffeescript regex로 악센트 부호가있는 문자의 유효성을 검사하는 방법은 무엇입니까?

알파벳 문자 (이름 입력 용) 만 허용되는이 coffeescript-flavor jQuery 웹 페이지 텍스트 입력 필드 검사기가 있습니다.

allowAlphabeticalEntriesOnly = (target) -> 
    target.keypress (e) -> 
    regex = new RegExp("[a-zA-Z]") 
    str = String.fromCharCode((if not e.charCode then e.which else e.charCode)) 
    return true if regex.test(str) 
    e.preventDefault() 
    false 

그리고 그것은 호출됩니다 : 크고 작은 문자 일이 힘들 얻을 singlequote를 제외하고 대부분의 모든 입력을 거부,

allowAlphabeticalEntriesOnly $("#user_name_text") 

코드 및 정규식 잘 작동.

작은 따옴표로 악센트 부호가있는 문자를 허용하는 방법이 있지만 따옴표 다음에 금지 된 문자를 입력하지 않으려면 어떻게해야합니까?

편집 : 모든 사람이 실패하면, 하나의 백 엔드가 잘못된 문자 삭제 구현할 수 있습니다 (모든 문자 나 알파벳 순으로 악센트 문자와 일치하는 [a-zA-Z\u00C0-\u017F]를 사용해보십시오

+0

당신은 UTF-8 문자의 범위를 허용 coud. 그 캐릭터의 UTF-8 코드를 알고 있습니까? –

답변

0

을하고 결국 무엇 인 .gsub(/[^a-zA-Z\u00C0-\u017F]/, '') - 라 지정된 유니 코드 범위 내).

은 참조 : Matching accented characters with Javascript regexes

+0

이것은 Alt (Option) 키를 사용하여 악센트 부호가있는 문자를 트리거하는 키보드 레이아웃에 매우 효과적입니다. 그러나 사용자는 주로 singlequote 키를 사용하고 정규 표현식을 이스케이프 처리하여 이름 필드에 "@ '9'+ ". 게다가, [^ \ ']는 그것의 진입을 막지 않습니다. (나는 그것으로 악센트를 얻을 수 있어야합니다.) ** 입력 된 싱글 쿼트 뒤에 ** 허용 된 문자 입력을 시행하는 방법은 무엇입니까? – Epigene

+0

당신의 이슈와 같은 사운드는 정규식과 관련이 없을 수도 있지만, 키 업에서 유효성을 검사하는 것과 사용자가 필드를 흐리게하기 전에 유효하지 않은 문자를 제거하도록 사용자 입력을 수정하는 것이 더 중요합니다. [^ \ ']이 (가) 항목을 막지 만 사용중인 키보드 설정에 대한 통찰력이 없으므로 문제를 추측하기 어렵습니다. 아마도 대신 블러 이벤트 필드를 검증 해 볼 수 있을까요? –