在Javascript中从字符串中提取特定单词

时间:2017-01-06 22:16:07

标签: javascript

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

鉴于上面的字符串我怎么能在字符串中提取“iamlookingforthis = 226885”?它的价值可能会改变,因为这是动态的。所以,其他实例可能是“iamlookingforthis = 1105”。位置/顺序也可能发生变化,可能位于中间或最后一部分。

提前谢谢你。

2 个答案:

答案 0 :(得分:5)

您可以使用Regex来匹配特定文字。

像这样的例子

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

alert(value); // 226885

Regex101的解释:

#iamlookingforthis=字面匹配字符#iamlookingforthis=(不区分大小写)

  • 第一捕获小组(\d+)
    • \d+匹配一个数字(等于[0-9]
    • +量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
  • 全局模式标记
    • i修饰符:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的情况)

另一种选择是拆分字符串。您可以按#|?|&拆分它。

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

答案 1 :(得分:1)

这是一个片段:



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