2015-04-02 7 views
1

У меня есть элемент на форме:Анализировать строка с JavaScript

<img src="/media/BodyPart_7d0cf57e-a461-44fd-903f-ce77b005e299/300/0" class="media-item"> 

Я хочу, чтобы извлечь Bodypart_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Здесь их масок строки "/{anyt-ext-here}/BodyPart_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/{any-number-here}/{any-number-here}"

Что такое лучший день это сделать?

+0

Возможно 'String.match (/ _ часть тела [^ \ /] +/я)' будет делать. Если совпадение не найдено, оно возвращает * null *, в противном случае массив первого совпадения. – RobG

ответ

1

Нечто подобное:

var output= document.querySelector("#output"); 
 
var img= document.querySelector(".media-item"); //assuming there is only the wanted img of this class 
 

 
var extracted_string= img.src.match(/BodyPart[^\/]*/); 
 
if(extracted_string) 
 
    output.innerHTML= extracted_string; 
 
else 
 
    output.innerHTML= "no match found"; 
 
    
<img src="/media/BodyPart_7d0cf57e-a461-44fd-903f-ce77b005e299/300/0" class="media-item"> 
 

 
<div id="output"></div>

+0

Ошибка здесь: 'img.src.match (/ BodyPart [^ \ /] * /)' say 'img.src' недофинансировано. Я перехватил отладчик 'img' имеет externalHTML' externalHTML: " sreginogemoh

+0

пытался «$ (img) attr (« src »)' - не доступен – sreginogemoh

+1

jquery возвращает массив всех элементов, соответствующих селектору , даже если есть только один возвращенный. Таким образом, вы можете использовать: '$ (this) .prev (" img.media-item ") [0]', чтобы получить элемент img, тогда вы сможете получить атрибут src с: '$ (this) .prev (" img.media-item ") [0] .src' и' $ (this) .prev ("img.media-item") [0] .src.match (/ BodyPart [^ \ /] * /) ', чтобы получить запрошенную часть URL. – Gael

1

Попробуйте этот код:

var input = "<img src=\"/media/BodyPart_7d0cf57e-a461-44fd-903f-ce77b005e299/300/0\" class=\"media-item\">"; 
var matches = input.match(/^<img src=.*\/(BodyPart\_\w{8}\-\w{4}\-\w{4}\-\w{4}\-\w{12})\//); 

alert(matches[1]); 

Выход:

BodyPart_7d0cf57e-a461-44fd-903f-ce77b005e299 
1

Попробуйте с использованием .split(), .filter()

var img = document.querySelectorAll("img[src*=BodyPart]")[0]; 
 
var res = img.src.split("/").filter(function(src, i) { 
 
      return /BodyPart/.test(src) 
 
      })[0]; 
 
console.log(res);
<img src="/media/BodyPart_7d0cf57e-a461-44fd-903f-ce77b005e299/300/0" class="media-item">

Смежные вопросы