Как я могу извлечь "456" из "xxx_456", где xxx имеет неопределенную длину?
Подстрока с обратным индексом
Ответ 1
var str = "xxx_456";
var str_sub = str.substr(str.lastIndexOf("_")+1);
Если это не всегда три цифры в конце (и разделены подчеркиванием). Если конечный разделитель не всегда является символом подчеркивания, вы можете использовать регулярное выражение:
var pat = /([0-9]{1,})$/;
var m = str.match(pat);
		Ответ 2
 slice отлично работает в IE и других браузерах, это часть спецификации, и это самый эффективный метод:
alert("xxx_456".slice(-3));
//-> 456
 slice Метод (String) - MSDN 
slice - Центр разработчиков Mozilla
Ответ 3
Метод substring позволяет указать индекс начала и конца:
var str = "xxx_456";
var subStr = str.substring(str.length - 3, str.length);
		Ответ 4
вы можете просто разбить его и получить последний элемент
var string="xxx_456";
var a=string.split("_");
alert(a[1]); #or a.pop
		Ответ 5
alert("xxxxxxxxxxx_456".substr(-3))
Предостережение: согласно mdc, а не совместимый с IE
Ответ 6
Сумасшедший регулярный подход
"xxx_456".match(/...$/)[0] //456
		Ответ 7
вот моя пользовательская функция
function reverse_substring(str,from,to){
  var temp="";
  var i=0;
  var pos = 0;
  var append;      
  for(i=str.length-1;i>=0;i--){
    //alert("inside loop " + str[i]);
    if(pos == from){
         append=true;
    }
    if(pos == to){
         append=false;
         break;
    }
    if(append){
         temp = str[i] + temp;
    }
    pos++;
  }
  alert("bottom loop " + temp);
}
var str = "bala_123";
reverse_substring(str,0,3);
Эта функция работает для обратного индекса.
Ответ 8
String.prototype.reverse( ) {
     return Array.prototype.slice.call(this)
          .reverse()
          .join()
          .replace(/,/g,'')
}
с использованием метода обратной строки
var str = "xxx_456"
str = str.reverse() // 654_xxx 
str = str.substring(0,3) // 654 
str = str.reverse() //456
если ваш обратный метод возвращает строку, затем соедините методы для более чистого решения.
Ответ 9
Простое регулярное выражение для любого числа цифр в конце строки:
'xxx_456'.match(/\d+$/)[0]; //456
'xxx_4567890'.match(/\d+$/)[0]; //4567890
или используйте split/pop действительно:
('yyy_xxx_45678901').split(/_/).pop(); //45678901