2013-05-15 2 views
1

First Name, 사람의 Last Name을 삽입 할 텍스트 입력이있는 양식이 있지만 각 단어의 첫 글자를 대문자로 변경하려고합니다.이 해결책을 찾았습니다.자바 스크립트/jQuery 액센트가있는 변수의 첫 글자

그리고 작동합니다 : ("hEllO"=>"Hello", "whAts uP" =>"Whats Up"). 나는 악센트 단어에 이것을 적용하려고 할 때 문제가 발생

, 예 :

"gonzález" = "GonzáLez", 
"pérez" = "PéRez" 

는 악센트 단어 후 다시 대문자가있다.

이 문제를 방지하려면 어떻게 정규 표현식을 수정할 수 있습니까?

당신이 나를 도울 수 있기를 바랍니다 !! :)

+0

아마도 http://stackoverflow.com/questions/196972/convert-string-to-에 문제를 중복 title-case-with-javascript/196991 # 196991? – gillyspy

+0

@gillyspy : 비 라틴 문자는 지원하지 않습니다. – Blender

답변

3

\b 비 단어 경계

(즉 \b[0-9a-zA-Z_]의 하나에 속하지 않는 모든 문자에 대한 경계를 만들 것입니다 것은) 그래서 그 악센트 단어는 단어에 대한 경계가 될 .. é 일치하지 않는

대신이 정규식

/(^|\s)[a-z\u00E0-\u00FC]/g 
+0

안녕하세요, Chrome Javascript 콘솔에서 사용해 보았습니다. SyntaxError : 예기치 않은 토큰^ –

+0

@ Cesar_K-rrillo가 새 수정을 확인합니다. – Anirudha

+0

@Anirudh : 여전히 동일한 문제가 있습니다. '[a-z]'는 악센트 부호가있는 문자와 일치하지 않으므로'él'은 대문자가되지 않습니다. – Blender

2

[a-z]를 사용합니다. 당신은 일해야합니다 관대 조금 :

"gonzález foo bar, baz él".replace(/(^|\s)\S/g, function(match) { 
    return match.toUpperCase(); 
}); 

그리고 출력 :

"González Foo Bar, Baz Él" 
+0

개선을 제안하므로 "stRING"과 같은 문자열을 처리 할 수 ​​있습니다. "gonzález foo bar, baz él".toLowerCase(). replace (...) – ceruleus