在javascript中检索值TR

时间:2017-03-30 07:14:32

标签: javascript regex

目标:
在javascript中从“MARSSTANDGATA132TR”中检索值“2TR” 需要检索数字2的索引号。

问题:
只是不知道做什么是正确的语法?

的信息:
*值“TR”始终位于单词的末尾 *“TR”的数字“2”总是在变化。它只是一个数字,没有两个或三个数字 *地址和地址编号总是在变化 *当您执行正则表达式代码并且在单词的末尾找不到TR时,则无法检索请求的结果。

function myFunction() {
    var str = "MARSSTANDGATA132TR"; 
    var n = str.search("TR");
    document.getElementById("demo").innerHTML = n;
}
<button onclick="myFunction()">Test</button>

<p id="demo"></p>

谢谢!

2 个答案:

答案 0 :(得分:2)

由于TR总是在刺痛的结束,因此你不需要在这里使用正则表达式。

取最后两个符号,检查它是否为TR,如果是 - 从字符串末尾取第三个符号 - 否则 - 执行错误处理:

var str = "MARSSTANDGATA132TR";

if (str.slice(-2) == 'TR') {
  console.log(''+str.slice(-3, -2) + ' and index is ' + (str.length - 3));
} else {
  console.log('no TR');
}

答案 1 :(得分:0)

或者,如果您想使用索引来找到正确的tr和num idx:

let str = "MARSSTANDGATA132TR"; 
let tr = str.search("TR"), numIdx;

if (tr !== -1) {
  numIdx = str[tr -1];      
  tr = str.substr(tr, tr + 1);
} else {
  alert('no TR');
}
console.log(tr);
console.log(numIdx)

或者如果字符串包含多个TR,那么您需要确保它确实是正确的。

let str = "MARSS**TR**ANDGATA132**TR**"; 
let trIdx = 0, tr, numIdx;

let findTrIdx = (str) => {
  let tmpIdx = str.search('TR');
  if (!parseInt(str[tmpIdx - 1])) {
    let newStr = str.substr(tmpIdx + 2, str.length -1);
    tmpIdx = tmpIdx + 2;
    findTrIdx(newStr);
  } 
  trIdx += tmpIdx;
  return trIdx;
}

trIdx = findTrIdx(str);

if (trIdx !== -1) {
    numIdx = str[trIdx -1];
  tr = str.substr(trIdx, trIdx + 1);
} else {
    alert('no TR');
}
console.log(tr);
console.log(numIdx)