4
#anotherdata=value#iamlookingforthis=226885#id=101&start=1

Given the string above how could I extract "iamlookingforthis=226885" in the string? value of it might change as this is dynamic. So, other instance might be "iamlookingforthis=1105". The location/sequence might also change, it could be in the middle or last part.

Thank you in advance.

Adam Azad
  • 11,171
  • 5
  • 29
  • 70
Jkizmo
  • 99
  • 1
  • 1
  • 2
  • 2
    You told us what about the string might change, but in order to grab this specific part, we'll need to know what's *constant*. Is it always between `#`s? Is it always `iamlookingforthis`? – Tyler Roper Jan 06 '17 at 22:18
  • 1
    Possible duplicate of [How to check if one string contains another substring in JavaScript?](http://stackoverflow.com/questions/1789945/how-to-check-if-one-string-contains-another-substring-in-javascript) – OneNeptune Jan 06 '17 at 22:18
  • Why `iamlookingforthis=226885` instead of e.g. `anotherdata=value` or `id=101&start=1`? – Oriol Jan 06 '17 at 22:18
  • 1
    Why has this question got so many downvotes? I understood what OP was asking immediately. @OneNeptune the question clearly asks how to "extract". What has OP's question got to do with checking if a string contains a value? – BugHunterUK Jan 11 '17 at 09:21

2 Answers2

8

You can use Regex to match a specific text.

Like this for example

var str = '#anotherdata=value#iamlookingforthis=226885#id=101&start=1';
var value = str.match(/#iamlookingforthis=(\d+)/i)[1];

alert(value); // 226885

Explanation from Regex101:

#iamlookingforthis= matches the characters #iamlookingforthis= literally (case insensitive)

  • 1st Capturing Group (\d+)
    • \d+ matches a digit (equal to [0-9])
    • + Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)
  • Global pattern flags
    • i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

See


Another alternative would be to split the string. You could split it by #|?|&.

var str = '#anotherdata=value#iamlookingforthis=226885#id=101&start=1';
var parts = str.split(/[#\?&]/g); // split the string with these characters

// find the piece with the key `iamlookingforthis`
var filteredParts = parts.filter(function (part) {
  return part.split('=')[0] === 'iamlookingforthis';
});

// from the filtered array, get the first [0]
// split the value and key, and grab the value [1]
var iamlookingforthis = filteredParts[0].split('=')[1];

alert(iamlookingforthis); // 226885
BrunoLM
  • 97,872
  • 84
  • 296
  • 452
  • var str = '#anotherdata=value#iamlookingforthis=226885#id=101&start=1'; var value = str.match(/#iamlookingforthis=(\d+)/i)[1]; alert(value); // 226885 If I am not sure about what would be the value how will I modify the regex? It could be something like #iamlookingforthis=textvalue or #iamlookingforthis=alphanumeric or #iamlookingforthis=anything – Jkizmo Jan 12 '17 at 15:48
3

Here's a snippet:

var str = '#anotherdata=value#iamlookingforthis=226885#id=101&start=1';

var extracted = str.split("#").find(function(v){ 
  return v.indexOf("iamlookingforthis") > -1;
});

alert(extracted); // iamlookingforthis=226885