2013-08-09 2 views
0

저는 정규식에있어 매우 익숙하며 익숙해 지려고 노력하지만 매우 혼란 스럽습니다.regex를 사용하여 문자열의 certian 부분을 검색하십시오.

내 목표는 특정 문자로 시작하는 문자열 덩어리를 꺼내는 것입니다.

내가 반환 모든 싶습니다 후 /images

예 : URL : 내가 좋아하는 것이 무엇 https://www.google.com/images/srpr/logo4w.png

가 반환 :

var src = document.getElementById('image').getAttribute("src"), 
    regex = src.match(/images/i); 

console.log(regex); 

jsFiddle : /images/srpr/logo4w.png 여기

내 시도

+3

이 경우에는'substring'이 더 잘 작동합니다. src.substr (src.lastIndexOf ('/ images /') + 8) –

+0

@Vega와 동의합니다.이 경우 정규 표현식을 피하는 것이 훨씬 낫습니다. 즉, 당신은 이미 학습 목적을위한 것임을 이미 확인 했으므로 계속 진행하십시오. – jahroy

답변

2

아래의 정규 표현식을 사용하십시오. 당신도이 경우에 대한 슬래시로 그것을 대체 할 수 있도록

regex = src.match(/.images.*/i); 
console.log(regex[0]); 

확인이 바이올린 Demo

편집

사실 정규식의 시작에 점은, 모든 문자를 일치합니다. 당신은 너무 split()을 사용할 수 있습니다

regex = src.match(/\/images.*/i); 
+0

완벽하고 정확히 내가 찾고있는 것. 감사! – Shivam

2

(슬래시 때문에 백 슬래시로 이스케이프 특수 문자입니다)! 이처럼 간단한 것에서는 정규 표현식을 수행 할 필요가 없습니다.

string = src.split(/images/)[1];

은 SRC의 '/ 이미지 /'문자열 뒤에 모두를 분할합니다.

DEMO : indexOf를 사용

var str = "https://www.google.com/images/srpr/logo4w.png"; 
console.log(str.substring(str.indexOf("/images"))); 

먼저 "/ 이미지"의 발생을 찾고 후 모든 것을 잡아 :http://jsfiddle.net/shannonhochkins/T74L7/11/

+0

감사합니다. 이것도 작동합니다 – Shivam

2

당신은 당신이 뭘 하려는지 달성하기 위해 substringindexOf을 사용할 수 있습니다 그것은 substring을 사용합니다.

+0

고마워요! 이것은이 작업을위한 훨씬 쉬운 접근법이지만 정규식을 배우기를 원하기 때문에 엉망이 될 수도 있습니다. – Shivam

+0

@ Shivam - 우리는 당신이 배우기를 원한다는 것을 알고 있으므로, 모두 좋습니다. 우리 중 많은 사람들은 아무 이유없이 정규식으로 일을하려고하는 사람들에게 _knee-jerk_ 반응을 단순히 개발했습니다. 따라서이 조언을 제공하거나 승격하지 않는 것이 어렵습니다 .-) – jahroy

+0

예, 동의합니다. 나는 그것을 스스로 투표했다 :) – Shivam

1

정규식으로, 다음이 수행해야합니다

href.match(/^(https|http):\/\/[^\/]*(.*)$/)[2] 

을 목적으로 학습, 나는 또한뿐만 아니라 여기에 몇 가지 설명을 넣어 :

^: 문자열
$의 시작 : 문자열의 끝
(https : http) : 이렇게하면 두 프로토콜 모두에서 regx가 작동합니다.
// // this is : //
[^ /] * : this 도메인은
입니다.*) : 이것은 남아있는 경로입니다.

정규 표현식에서 표현식을 () 안에 넣으면 반환 값으로 나타납니다.

희망 도움말.

+0

아픈, 고마워. 도전적으로 많은 도움이됩니다. – Shivam

관련 문제