2014-04-14 3 views
1

그 같은 URL이 \/([^/]+)\/는 있지만 CF에서 예상 작동하지 않습니다 같이정규식은

<cfset ret.REDIRECT = reReplace(currentUrl, "\/([^/]+)\/", "FIRST", "all") /> 

당신이 무엇을 제안 마십시오 REGE 모두 x와 cf 코드?

감사합니다.

+1

은 * 모든 *의주의 ... 그것은 모든 발생을 대체합니다. –

답변

2

첫째, /을 정규식에서 탈출 할 필요가 없습니다. (때로는 자바 스크립트 정규식 리터럴과 같이 이스케이프 처리가되는 것을 볼 수 있지만 정규 표현식이 아닌 JS 측이 이스케이프 처리되고 정규식이 아닙니다.)

그러나 변경을해도 원하는대로 수행되지 않습니다. 호스트 부품 다음의 첫 번째 세그먼트 대신 다른/모든 부품을 교체해야합니다.

reReplace(CurrentUrl, "^(https?://[^/]+/)[^/]+/", "\1FIRST/") 
  • ^ 앵커는 입력의 시작 대체 :

    당신이 원하는 같은 것을 사용하는 일을합니다.
  • (..) 부분은 프로토콜 및 호스트 이름을 캡쳐하므로 대체 문자열에 \1으로 다시 삽입 할 수 있습니다.
  • 마지막 [^/]+/은 요청 uri의 첫 번째 부분을 캡처하고이를 대체 문자열의 FIRST/으로 바꿉니다.

(당신은이 요구되어 있지 않은 경우 후행 /를 생략하거나 바꾸기 측면에 넣을 필요없이이 있음을 주장 (?=/)를 사용할 수 있습니다.)

+0

작동하지 않습니다. 동일한 문자열을 인쇄합니다. <하는 cfdump VAR = "#의 pippo 번호"/>

+0

죄송합니다. 벙어리 - 당신은'^'을 원하지 않습니다 - 잠시 후에 업데이트 될 것입니다. –

+0

업데이트 버전입니다. 궁금한 점이 있으면 알려주세요. –