2015-04-02 227 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}"

的面具什麼是最好的一天doint呢?

+0

大概'string.match(/正文部分_ [^ \ /] +/I)'都行。如果找不到匹配,則返回* null *,否則返回第一個匹配的數組。 – RobG 2015-04-02 02:55:51

回答

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 [^ \ /] * /)'說'img.src' underfined。我使用jquery'$(this).prev(「img.media-item」)來調試'img'有outerHTML'outerHTML:「 sreginogemoh 2015-04-02 04:01:12

+0

嘗試'$(img)attr(「src」)' - 不可用 – sreginogemoh 2015-04-02 04:03:28

+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 2015-04-02 07:11:43

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">