Javascript 你将如何通过一个字符串,并能够拉出数字使用正则表达式?

Javascript 你将如何通过一个字符串,并能够拉出数字使用正则表达式?,javascript,regex,database,web-scraping,Javascript,Regex,Database,Web Scraping,所以我需要和regex核对多件事。这些名称可能看起来像这样,因此我将搜索关键字名称的字符串 name: 'Pop Icons #23 Paulie Pigeon Pinstripe Jersey NYCC' or name: 'Pop Marvel 80th 526 Captain Marvel / Mar-Vell First Appearance' or name: 'Pop 2001: A Space Odyssey #823 Dr. Frank Poole' or name:

所以我需要和regex核对多件事。这些名称可能看起来像这样,因此我将搜索关键字名称的字符串

name: 'Pop Icons #23 Paulie Pigeon Pinstripe Jersey NYCC'
 or 
name: 'Pop Marvel 80th 526 Captain Marvel / Mar-Vell First Appearance'
 or
name: 'Pop 2001: A Space Odyssey #823 Dr. Frank Poole' 
 or 
name: '389 Blue-Eyes White Dragon'
 or 
name: 'Pop Up Movie Town #05 Kevin with Up House'
我现在拥有的是

var numbers = /#[1-9]\d*\b/g;
var matchNumber = title.splitTitle.match(numbers);

return {
  number: matchNumber && matchNumber[0],
  name: title.splitTitle,
  image: title.image,
};
上面,title有一个叫做splitTitle和image的对象,它看起来像这样

title: {
  splitTitle: 'Pop Marvel 80th 526 Captain Marvel / Mar-Vell First Appearance'
  image: '*string that links to an image of the funko pop'

目前,只有在funko号码前面有一个“#”时,才能得到funko号码。我需要能够在上面所有这些类型的字符串中获得funko pop tho的编号。我不会像2001年那样需要额外的钱,因为那只是一年。我试图建立一个funko数据库,只需要实际的funko流行音乐号码。我的一个想法是确保funko pop数字的长度不超过4位数,因为这将使它最有可能在今年出现,并且从网上搜索来看,funko pop的长度似乎不超过3位数。但这将导致第80位,这只是一个系列,因为它不到4位。任何帮助都会很棒

您可以使用单词边界
\b
并匹配1到3位数字

\b\d{1,3}\b
如果后面不能有一个
,您可以使用一个负前瞻
(?!:)

[
“流行偶像#23保利鸽子细条纹运动衫NYCC”,
“Pop Marvel第80届526 Marvel船长/Mar Vell首次亮相”,
“波普2001:太空之旅——弗兰克·普尔博士”,
“389蓝眼白龙”,
“弹出式电影城#05 Kevin和Up House”,
“测试42:”
].forEach(s=>{
设m=s.match(/\b\d{1,3}\b(?!:)/);
log(m`${m[0]}-->匹配`:`${s}-->不匹配`);

});
如果您只想要数字,您可以使用一个捕获组
#([1-9]\d*)\b
您可以明确指出每个输入的输出应该是什么吗?@TedBrownlow,是的,所以每个输出应该是这样的对象{数字:526,名称:Pop Marvel 80th 526 Marvel Captain Marvel/First Appearance,image:link to image}但它必须能够适用于所有这些不同的字符串,因为我所访问的网站在每个funko pop系列中的结构都不一样,可能只有一个编号出现在格式为
#23
@的第四只鸟我只需要funko pop,我不需要日期号或序列号,即2001年,或第80届。只有funko,比如23或526。