2011-10-06 9 views
1

나는 데이터베이스에 저장하기 전에이 패턴 [^a-z0-9+\ ,#\-.]을 사용하여 태그를 필터링하고 있습니다.정규식 제거 여분의 문자

바람직하지 않은 부작용이 발생합니다. 악센트를 제거합니다 : instalaçãoinstalao

패턴을 고수하면서 악센트를 유지할 수있는 방법이 있습니까?

저는 ColdFusion을 사용하고 있으므로 Java Regex를 기반으로한다고 가정합니다.하지만 틀릴 수 있습니다.

제 의도는 글자 (악센트 포함), 0-9 아라비아 숫자, 점 및 해시를 허용하는 것입니다.

+0

@Bart, 업데이트 참조! – Mohamad

+0

Java를 기반으로하는 정규식 구현을 사용하는 ColdFusion은 확실합니까? –

+0

@Bart, 긍정적이지는 않지만 나는 그렇게 상상한다. Java와의 긴밀한 통합이 가능하며 Java 메소드를 직접 호출 할 수 있습니다. JRun/Tomcat에서 각각 실행되는 CF/Railo 엔진 ... – Mohamad

답변

5

에 따르면 the documentation\w은 모든 (유니 코드) 문자와 일치하지만 밑줄도 포함합니다. 당신이 밑줄을 원하지 않는 경우, 당신은이 작업을 수행 할 수 있습니다

[:alpha:] 어떤 (유니 코드) 편지를 일치
[^[:alpha:]0-9#.-] 

. ,

[^[:alnum:]##.-] 

주 ColdFusion에서 자신의 태그를 탈출 할 수있는 여분의 해시 그렇지 않으면 한 말 - 형성 태그/변수 오류가 발생할 것입니다 : 당신이 0-9 범위를 벗어난 숫자를 일치 시키려면, 시도.

+0

혼란을주지 않기 위해 내 대답을 삭제했습니다. – Donut

+0

@Donut, 당신은 자바 스타일의 정규식이라는 발언에 의해 조금 벗어났습니다. –

+0

분명히; 매일 새로운 것을 배웁니다! – Donut

2

문자 클래스를 사용해 보셨습니까? \ w은 글자, 숫자 및 밑줄과 일치하며, 확실하지는 않지만 악센트 부호가있는 문자와 일치 할 수 있습니다.

2

사용하는 모든 단어 문자와 일치 \ w에

[^\w] 

. 이 경우 모든 단어가 아닌 문자. 또는

\W 

모든 단어가 아닌 문자와 일치하도록하십시오.

+1

'\ W'에 대괄호를 쓸 필요가 없습니다. –

+0

네 말이 맞아, 고마워. – Valadas