2010-03-11 4 views
21

나는 자바 스크립트를 배우고 있으며 기존 코드를 분석하고 있습니다.자바 정규식 "단일 공백 ​​문자"

저의 JS 참고 서적에서 "\s"이라는 단일 공간을 검색한다고 말합니 까?

그러나 내가 가지고, 그것은 실제 공간을 사용 \s를 사용하여 코드

obj.match(/Kobe Bryant/); 

대신 우연히 만났다?

왜이 오류가 발생하지 않습니까?

+0

MDN 정규식 페이지입니다 JS 정규 표현식과'RegExp' 개체를 처리하는 좋은 자원 : https://developer.mozilla.org/docs/Web/JavaScript \s이 문자 클래스에 해당/Reference/Global_Objects/RegExp – toolbear

답변

59

문자 클래스 \s은 공백 문자뿐만 아니라 다른 Unicode white space characters도 포함합니다.

[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000] 
+2

+1, 아마 다른 사람보다 링크를 가져 오는 데 더 오래 걸렸을 것입니다 :-) –

+0

데이터를 인코딩하는 모든 사람이 "하나의 참된 공간 char", " '모든 공백 사용자가 나를 보낼 수 있습니다'. \ s는 거의 항상 원하는 것이지만 조심해야합니다 ... 바이너리 데이터를 인코딩하는 경우 'spacebar' '\ u0020' – Ajax

5

아니요 정규식에 리터럴 공백을 포함하는 것이 합법입니다.

그러나 동등하지 않습니다. \s에는 탭, 줄 바꿈하지 않는 공백, 반자 공백 및 기타 문자를 포함한 공백 문자가 포함되지만 리터럴 공백은 일반 공백 문자에만 적용됩니다.

5

\s은 탭 등 공백 문자와 일치합니다. 문제없이 문자 그대로의 공간을 사용할 수 있습니다. 마찬가지로 숫자를 나타내는 데 \d 대신 [0-9]을 사용할 수 있습니다.

1

일반 공백 이외에도 \s은 탭 (구성에 따라 줄 바꿈 문자가있을 수 있음)을 포함하여 여러 종류의 공백 문자와 일치합니다. 즉 보통 공간과 일치하는 것이 특히 유효합니다. 일반적으로 정상적인 공간으로 구분되는 이름과 일치하려는 경우에 특히 그렇습니다.