2012-03-26 2 views
-2

문자열에서 찾으려고합니다. XXXX-XXX-XXX 여기서 X는 숫자입니다.RegExp를 만드는 방법

자바 스크립트를 사용하여 문자열에서이를 찾을 필요가 있으므로 보너스는 나에게도 자바 스크립트를 제공 할 수있는 사람을 나타냅니다. 나는 정규 표현식을 만들려고 노력했다 : ^[0-9]{4}\-[0-9]{3}\-[0-9]{3}$

또한 나는 당신이 정규 표현식을 만드는 데 사용하는 치트 시트 나 프로그램에 대해 알고 싶다.

+0

정규식을 만들려고 다음과 같이했습니다 :^[0-9] {4} \ - [0-9] {3} \ - [0-9] {3} $ – MichaelH

+0

이것이 합당한 질문 인만큼? @AmitBhargava 하이픈은 정규식의 구문 문자이므로 리터럴로 작업하려면 하이픈을 이스케이프해야하므로 올바르지 않습니다. – austincheney

+0

감사합니다 @austincheney –

답변

3

i suppose this is what you want : 의심

\d{4}-\d{3}-\d{3} 

? 당신의 시도와 "정규식 테스터"

+0

하이픈은 정규식에서 구문 문자이므로 이스케이프 처리해야합니다. – austincheney

+1

@austincheney 진짜? [이스케이프 대시없이 * 작동] (http://jsfiddle.net/Ck3pm/) – Joseph

+0

문자 집합 외부에 적용되는 것이 확실합니까? – hexparrot

-1
var result = (/\d{4}\-\d{3}\-\d{3}/).exec(myString); 
+0

-1은 하이픈을 벗어날 필요성에 대한 잘못된 정보를 전파합니다. –

+0

@AdamZalcman 이제 너 사소한거야. 위의 귀하의 의견에 대답했습니다. – austincheney

1

를위한 Google : - 따라서 당신은 명시 적으로 백 슬래시 문자 찾고있는 - 이후

^[0-9]{4}\-[0-9]{3}\-[0-9]{3}$ 

는 메타 문자 아니라, 탈출 할 필요가 없습니다.

또한 문자열 시작 부분과 끝 부분에 일치 항목을 고정했습니다. 숫자의으로 구성된 문자열 만 일치합니다.

내가 계산의 {3} 스타일과 같은 대부분의 사람들이 알고 (. 음, 나머지를 가정하는 것은 정확했다)하지만, 일이 일치 될 때,이 더 명료 한 자리 찾기 : 분명히

\d\d\d\d-\d\d\d-\d\d\d 

당신이 16 진수를 일치하는이 확장하기를 원한다면,이 일을 연장 끔찍한 것입니다,하지만 난이 대안보다 훨씬 더 읽기 쉬운 생각 : 당신이 읽을 수있는 가장 쉬운 방법입니다 무엇에

\d{4}-\d{3}-\d{3} 
[[:digit:]]{4}-[[:digit:]]{3}-[[:digit:]]{3} 
[0-9]{4}-[0-9]{3}-[0-9]{3} 

이동합니다.

perlre(1) 맨 페이지를 필자의 주된 참조로 사용하는 경향이 있습니다. 많은 regexp 엔진보다 훨씬 기능이 뛰어납니다. 대부분의 시스템에 perlre 맨 페이지가 얼마나 편리하게 제공되는지 고려하여 차이점을 처리 할 준비가되었습니다.

관련 문제