如何从 xxx _ 456中提取 xxx 长度不定的“456”?
The substring method allows you to specify start and end index:
var str = "xxx_456"; var subStr = str.substring(str.length - 3, str.length);
alert("xxxxxxxxxxx_456".substr(-3))
caveat: according to mdc, not IE compatible
var str = "xxx_456"; var str_sub = str.substr(str.lastIndexOf("_")+1);
If it is not always three digits at the end (and seperated by an underscore). If the end delimiter is not always an underscore, then you could use regex:
var pat = /([0-9]{1,})$/; var m = str.match(pat);
A crazy regex approach
"xxx_456".match(/...$/)[0] //456
you can just split it up and get the last element
var string="xxx_456"; var a=string.split("_"); alert(a[1]); #or a.pop
slice works just fine in IE and other browsers, it's part of the specification and it's the most efficient method too:
slice
alert("xxx_456".slice(-3)); //-> 456
slice Method (String) - MSDN slice - Mozilla Developer Center
here is my custom function
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);
This function works for reverse index.
Simple regex for any number of digits at the end of a string:
'xxx_456'.match(/\d+$/)[0]; //456 'xxx_4567890'.match(/\d+$/)[0]; //4567890
or use split/pop indeed:
('yyy_xxx_45678901').split(/_/).pop(); //45678901
String.prototype.reverse( ) { return Array.prototype.slice.call(this) .reverse() .join() .replace(/,/g,'') }
using a reverse string method
var str = "xxx_456" str = str.reverse() // 654_xxx str = str.substring(0,3) // 654 str = str.reverse() //456
if your reverse method returns the string then chain the methods for a cleaner solution.
Also you can get the result by using substring and lastIndexOf -
substring
lastIndexOf
alert("xxx_456".substring("xxx_456".lastIndexOf("_")+1));
Although this is an old question, to support answer by user187291
In case of fixed length of desired substring I would use substr() with negative argument for its short and readable syntax
substr()
"xxx_456".substr(-3)
For now it is compatible with common browsers and not yet strictly deprecated.
One way of extracting only the numbers
name = "xxx_456" substring = reverse(reverse(name)[1:3]) substring