2011-10-13 110 views
2

我傢伙 我需要一些幫助,一些正則表達式:正則表達式的JavaScript

這裏是字符串:

<div style="width:477px;" id="__ss_8468630"><strong style="display:block;margin:12px 0 4px;"><a rel="nofollow" target="_blank" href="http://www.slideshare.net/Account/title" title="&#x002019;s DDM SaaS Antivirus Patch Management Solution">DDM SaaS Antivirus Patch Management Solution</a></strong> <div style="padding:5px 0 12px;"> View more documents from <a rel="nofollow" target="_blank" href="http://www.slideshare.net/account">Account</a> </div> </div> 

,我需要得到公正的ID號。

ex。輸出:

感謝大家

+2

**使用。一個。 HTML。解析器。** –

+0

它會始終處於相同的格式嗎?總是有相同的位數?等等? – Spudley

+0

這一個(id =「__ ss_)總是相同的 – AlexC

回答

3

沒有必要的正則表達式,你可以做一個簡單的字符串替換。

element.id.replace('__ss_',''); // => '8468630' 
+0

這會工作,但假定字符串的__ss_部分總是同樣的,他沒有在問題中指定這個,所以正則表達式可能會更好 – Spudley

+0

他說「這裏是字符串」,這看起來像一個非常特殊的情況,即使字符串的前端改變,只要ID的長度保持一致,你仍然可以不用正則表達式:'element.id.substr(element.id.length-7,element.id.length);'雖然這可能不會更好比'element.id.replace(/ [^ 0-9]/g,'');' –

0

這將得到這些數字。儘管如果#位數發生變化,這將會中斷。

\d{7} 
1
"__ss_8468630".match(/[\d\.]+/g); // --> [8468630] 
0

作爲E中的div元素你可以作爲匹配返回其相同的位置包含在位置0(__ss_8468630)整個匹配的陣列,並且所述匹配組使用此

var n = e.id.match(/__ss_(\d+)/)[1]; 

。第1組 「(\ d +)」(8468630)

0

你可以做到以下幾點:

var num = element.id.replace(/\D*/g, '')