2013-01-27 2 views
0

나는 디렉토리의 시작에 대한 입력 값인 showNo을 가지고있다.Regex를 사용하여 경로 중간에 일치합니까?

예 : showNovar showNo = "101B"

다른 부서에서 설정 한 네트워크에 설치 공간 및 기타 쓰레기를 포함하는 문자입니다.

예 : 나는 내이 하나의 하위 디렉토리를 사용할 필요가 /101B A Trip to the Beach/

:

예 : /101B A Trip to the Beach/assets/tools/

모든 디렉토리를 스캔 방지하기 위해 정규식과 변수를 사용하는 방법이 있나요 처음 4 자의 부분 문자열과 일치 시키려고합니까?

답변

2
var directory = str.match(/\/101B[^\/]+\//)[0]; 

변수로 시작하는 첫 번째 디렉토리 이름과 일치합니다.

  1. 일치 디렉토리 슬래시로 시작하는 문자 처음 네 개의 문자열을 다음과 같이

    는 더 중요한 개념이다.

  2. 그런 다음 문자 이 아니며 디렉토리 슬래시와 일치해야합니다.^표시는 "is not"입니다.

  3. 그런 다음 추가로 0 번 이상 반복하십시오.

  4. 마지막으로 디렉토리 슬래시와 일치해야합니다.

당신은 "아무것도 아닌"문자 클래스에 문제가 있다고 생각합니다. 때로는 까다 롭지 만 일단 얻으면 매우 유용한 단축키입니다.

--edit--

사실의 다시 읽는 당신이 올바른 정규식 내부의 변수를 사용에 문제가 있었다 의심? 방법을 알기 만하면 너무 쉽습니다.

var regex_string = "/" + showNo + "[^/]+/"; 

을 그리고 다음과 같은 일반적으로 사용할 수있는 정규식으로 그것을 "컴파일":

먼저 문자열로 구성 할 수 있습니다이 도움이

var regex_dir = RegExp(regex_string); 

var directory = str.match(regex_dir); 

희망을!

+0

바우어 편집을 주셔서 감사합니다. 그러나 나는 희망을 계속 지키고 있습니다. –

+0

처음에는'str.match (/ \/101B [^ \ /] + \ //)'라고 생각합니다. 또는'/'가 정규 표현식을 사용하지 않으면 이스케이프 될 필요가 없기 때문에 다음과 같이하면됩니다 :'str.match ('/'+ showNo + '[^ /] + /')'. – MikeM

+0

@MikeM 완전히 맞습니다! 감사. –

관련 문제