2014-06-08 4 views
1

문자열에서 로마자가 아닌 문자를 어떻게 찾을 수 있습니까? A-Z와 0-9 범위를 벗어나는 모든 문자를 분류하는 것만 큼 간단하지 않습니다. 독일의 ä, ö, ü와 같은 로마 문자에는 많은 변형이 있습니다 - 로마에서는 여전히 "중문"은 로마의 스크립트가 아닙니다.JS에서 로마자가 아닌 문자를 찾는 방법은 무엇입니까?

+0

welcome to stackoverflow. 우리는 특정 문제에 도움을주고, 질문자가 자신의 문제를 해결하기 위해 지금까지 시도한 것을 제시하고이를 바탕으로 피드백을 받고 도움을주는 것이 일반적입니다. – Winchestro

답변

1

자바 스크립트는 기본적으로 유니 코드와 캐릭터는 다양한 스크립트가 아니라 http://www.unicode.org/charts/

에 설명되어 있습니다 당신은 라틴어 (로마) 스크립트에 해당하는 몇 개의 블록이있는 것을 볼 수 범위. 가장 많이 사용되는 것은 0080-00FF 범위의 Latin -1 보충으로 알려진 높은 ASCII 범위입니다. 여기에 언급 된 독일어 문자가 포함됩니다.

JavaScript를 사용하면 정규식을 사용하여 유니 코드 범위를 테스트 할 수 있습니다. 그래서이 예제에 따라 여러 문자열에서 라틴 1 보충 문자를 감지 할 수있다 :

var en = 'Coffee', 
    fr = 'Café', 
    el = 'Καφές'; 

console.log(en.replace(/[\u0080-\u00FF]/g, '*')); 
console.log(fr.replace(/[\u0080-\u00FF]/g, '*')); 
console.log(el.replace(/[\u0080-\u00FF]/g, '*')); 

이 인쇄됩니다

Coffee 
Caf* 
Καφές 

에 따라 때문에 우리의 문자가 악센트 é는 라틴 보충 범위를 일치하는 경우에만 범위에

:

그래서 당신이 할 수있는 더 나은 귀하의 질문에 대답하기 위해 "비 로마"문자를 감지하는 (따라서 *로 대체)

a ä ö ü ? ? 

당신은 당신이 특별히 필요로 무엇이든 할이 범위를 사용할 수 있습니다 보여줄 것 6,

var str = 'a ä ö ü 中 文', 
    reg = /[^\u0000-\u024F\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF]/g; 

console.log(str.replace(reg, '?')); 

. 유니 코드 블록에서 정규 표현식을 빌드하기 위해 this crude tool을 함께 넣었지만 거기에는 더 좋은 리소스가 있다는 것을 확신합니다.

관련 문제