Extracting the Item ID from an eBay url using javascript

egoselfaxis
egoselfaxis used Ask the Experts™
on
I need to extract -- using Javascript -- the Item ID value from an ebay URL that has the following format:

http://cgi.ebay.com/VINTAGE-PRESSED-GLASS-RUBY-FLASHED-DIAMOND-CANDY-DISH_W0QQitemZ120589354693QQcategoryZ4764QQcmdZViewItemQQ_trksidZp3907.m263QQ_trkparmsZalgo%3DSIC%26itu%3DUCI%252BIA%252BUA%252BFICS%252BUFI%252BDDSIC%26otn%3D8%26pmod%3D370178498217%26po%3DLVI%26ps%3D63%26clkid%3D7427724710710527929

(The item ID value is boldfaced in the url above)

How would I write a regular expression to extract that value and assign it to a variable?

I have the following, but it doesn't seem to be working:

itemid = ebayUrl.replace(/QQitemZ(\d+?)QQ/, '$1');

Please advise.

Thanks!
- Yvan

Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Gary DavisDir Internet Svcs

Commented:
Looks pretty close - remove the question mark.

Author

Commented:
I've removed the question mark, but it still isn't working.

- yg

Author

Commented:
For example, .. if you run the following javascript, .. you'll see that it returns the entire url instead of the extracted Item ID value:

<script language="JavaScript">
      var ebayUrl = "http://cgi.ebay.com/VINTAGE-PRESSED-GLASS-RUBY-FLASHED-DIAMOND-CANDY-DISH_W0QQitemZ120589354693QQcategoryZ4764QQcmdZViewItemQQ_trksidZp3907.m263QQ_trkparmsZalgo%3DSIC%26itu%3DUCI%252BIA%252BUA%252BFICS%252BUFI%252BDDSIC%26otn%3D8%26pmod%3D370178498217%26po%3DLVI%26ps%3D63%26clkid%3D7427724710710527929";            
      itemid = ebayUrl.replace("/QQitemZ(\d+?)QQ/", "$1");            
      alert(itemid);
</script>

Author

Commented:
Any takers?

- yg
Glanced up at my screen and thought I had coded the Matrix...  Turns out, I just fell asleep on the keyboard.
Most Valuable Expert 2011
Top Expert 2015
Commented:
It's not returning the whole string...  it's returning exactly what you asked it to do, which is to replace the string "QQitemZ[some digits]QQ" with the digits in "some digits". So you are getting back the string after the replacement occurred. Compare the before and after and you'll see what I mean.

To correct, you need to "capture" the rest of the string so that the whole string will be replaced by the captured digits. Try the following:
itemid = ebayUrl.replace(/^.+?QQitemZ(\d+?)QQ.+?$/i, "$1");

Open in new window

Chandramouli kArchitect
Commented:
you can do this using split function
<script >
var strURL = "http://cgi.ebay.com/VINTAGE-PRESSED-GLASS-RUBY-FLASHED-DIAMOND-CANDY-DISH_W0QQitemZ120589354693QQcategoryZ4764" //Please store URL value to strURL

var aItemID = strURL.split("QQitemZ")[1].split("QQcategory");

alert(aItemID[0]);
</script>

Open in new window

Author

Commented:
Thank you both.  Both of these suggestions worked equally well for me.

- Yvan

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial