2017-01-31 1 views
1

문자열의 모든 단어의 첫 번째 문자를 대문자로 만들고 싶습니다. 이 기사는 Replacement Text Case Conversion입니다. 난 정규식 ([A-ZA-Z]() [이-ZA-Z] (\의 S)) U \ 와 대체 텍스트 $ 1 \ L $ 2를 실행하고자바 스크립트에서 대소 문자 바꾸기로 바꾸기

내 편집자 (숭고한 텍스트)에서 잘 작동합니다.

그러나 자바 스크립트에서 아래와 같이 replace 메소드를 사용하여 동일한 작업을 수행하려고 할 때 구문 오류가 발생하여 실패합니다.

var regex = /([a-zA-Z])([a-zA-Z]*(\s)*)/gi; 
var rep = "\\u$1\\l$2"; // here it is giving error 
var result = input.replace(regex,rep); 

해결 방법?

이 문제는 charAt() 및 toUppercase() 메서드를 사용하여 해결할 수 있음을 알고 있습니다. 하지만 대체와 정규식을 사용하여 그것을하고 싶습니다. :)

+0

'a'라는 단어는 단어로 취급해야합니까? 예를 들면 "나는 책을 가지고있다" – RomanPerekhrest

답변

2

JS 정규식 엔진은 대체 패턴에서 대문자 및 소문자 연산자 \u\l을 지원하지 않습니다. String#replace 내부 콜백을 사용 : /([a-z])([a-z]*\s*)/gi에 패턴을 줄일 수 있습니다

var input = "aZ"; 
 
var regex = /([a-zA-Z])([a-zA-Z]*(\s)*)/gi; 
 
var result = input.replace(regex, function($0,$1,$2,$3) { 
 
    return $1.toUpperCase() + $2.toLowerCase(); 
 
}); 
 
console.log(result);

참고.

관련 문제