如何在字符串中搜索0000和9999之间的“字符串”匹配项

时间:2019-07-24 14:41:09

标签: javascript regex

我有一个可能包含帧号的字符串(文件名)。如果存在,则该数字应介于0000到9999之间,并且包括0到9999。我知道如何找到0到9999的匹配项。但是它特别需要找到4位数的匹配项。

所以这不是我想要的方式...

var fileName = "Ext 01_main Concept A0000"

for (var i = 0; i < 9999; i++){
   if (fileName.indexOf([i]) != -1) {
   var frame = i;
   }
}

在这种情况下,帧必须为“ 0000” 有什么建议吗? 谢谢!

3 个答案:

答案 0 :(得分:3)

您可以利用正则表达式来测试字符串并提取4位数字:

var fileName = "Ext 01_main Concept A0000"
console.log(fileName.match(/\d{4}/)); // result: [ 0000 ]

如果有问题的4位数字始终出现在字符串的末尾,则您也可以使用$令牌来确保有问题的4位数字显示为:

var fileName = "Ext 01_main Concept A0000"
console.log(fileName.match(/\d{4}$/)); // result: [ 0000 ]

答案 1 :(得分:-1)

您可以对字符串中的数字进行正则表达式并进行测试:

function f<K extends keyof T>(k: K): T[K]; // call signature same
function f(k: keyof T): T[keyof T] { // impl signature looser
  if (k === "a") {
    return 5;
  } else {
    return "5";
  }
}

您的代码可能有效,但最坏的情况是它执行9998不必要的检查!

答案 2 :(得分:-1)

您可以使用正则表达式执行此操作:

var fileName = "Ext 01_main Concept A0000";
// The regexp will search for any 4 digits from 0000 to 9999 
var match = fileName.match(/[0-9]{4}/g);
// The variable match will have an array with all matching values
// In this case the log should write [ '0000' ]
console.log(match);