2010-01-14 6 views
12

UTF-8 문자 및 숫자, 대시 기호 (-)와 일치하는 일반 표현식이 필요하지만 밑줄 (_)과 일치하지 않습니다. 성공하지 않고 이러한 어리석은 시도를 시도 :RegEx : w - "_"+ "-"UTF-8

  • ([\w-^_])+
  • ([\w^_]-?)+
  • (\w[^_]-?)+

\w는 속기 f를 또는 [A-Za-z0-9_]이지만, u 수정자가 설정된 경우 UTF-8 문자와도 일치합니다.

누구나 나를 도와 줄 수 있습니까?

+1

"UTF-8 글자"에 대해 구체적으로 설명하십시오 - 영어 문자 만 원하지 않습니까? –

+0

@meder : 영어 ** 및 ** 엑센트/외래 문자가 필요합니다. –

답변

17

이 시도 : 그것은 다음 승 \ (또는 대시)로 인코딩하고 아무것도에 대한 간단한 일치하는 문자가 단지 일치 된 것을 보장 제로 폭 lookbehind을 가지고 않습니다

(?:[\w\-](?<!_))+ 

밑줄이 아닙니다.

그렇지 않으면 당신은 선택할 수이 하나

더 설정 기반의 접근 방식은

OK (대문자 W주의)이다

(?:[^_\W]|-)+ 

, 나는의 PHP의 맛에 유니 코드와 재미를 많이했다 PCREs : D 가 까꿍 사용할 간단한 해결책이 말한다 :

[\p{L}\p{N}\-]+ 

P {L}이 (확인서 노트 자격 아무것도 유니 코드 일치 : \ 아닌 단어 문자를, 따라서 밑줄 없음), \ p {N}은 숫자처럼 보이는 것과 일치합니다 (로마 숫자와 이국적인 것들을 포함).
\ - 이스케이프 처리 된 대시입니다. "

[\p{L}\p{N}\p{Pd}]+ 

: 반드시 필요한 것은 아니지만, 나는 따라서 다음 버전으로 초래하는 유니 코드에서 다른 대시 수십 있다는 것을 참고 ... 그것을 문자 클래스의 대시를 탈출 할 수있는 지점을하는 경향이 Pd "는 구두점 대시 (Punctuation Dash)로, 마이너스 대시 (-)를 포함하되 이에 국한되지는 않습니다. (참고로, 여기서 다시 밑줄이 없음).

+0

\는 하이픈을 포함하지 않을 것입니까? – codaddict

+0

@dionadar - 이것은 나를 위해 악센트 부호가있는 문자와 일치하지 않습니다. –

+1

@codadict 내가 아는 한, 하이픈은 \ w에 포함되어 있지 않습니다. 심지어 그것이 그렇다고해도 상처를 입히지 않을 것입니다.) –

3

사용하는 언어가 확실하지 않지만 PERL에서 올바른 로케일이 설정되어 있으면 [[: alnum :] -] +를 쓸 수 있습니다.

+0

알아두면 좋지만 PHP (PCRE 엔진)를 사용하고 있습니다. –

+0

PHP와 Rubular (Ruby)에서 시도해보십시오. http://www.rubular.com/regexes/12922와 http://www.rubular.com/regexes/12923을 참조하십시오. –

+0

작은 실수를 수정했습니다. –