views:

50

answers:

3

Hi

I have a string like:

text-345-3535

The numbers can change. How can I get the two numbers from it and store that into two variables?

+3  A: 
var str = "text-345-3535"

var arr = str.split(/-/g).slice(1);

Try it out: http://jsfiddle.net/BZgUt/

This will give you an array with the last two number sets.

If you want them in separate variables add this.

var first = arr[0];
var second = arr[1];

Try it out: http://jsfiddle.net/BZgUt/1/


EDIT:

Just for fun, here's another way.

Try it out: http://jsfiddle.net/BZgUt/2/

var str = "text-345-3535",first,second;

str.replace(/(\d+)-(\d+)$/,function(str,p1,p2) {first = p1;second = p2});
patrick dw
thank you, it works. i used the 1st version
Alex
+2  A: 
var m = "text-345-3535".match(/.*?-(\d+)-(\d+)/);

m[1] will hold "345" and m[2] will have "3535"

Scott Evernden
i tried that and m is null...
Alex
err .. really ? .. http://jsfiddle.net/U8fZX/
Scott Evernden
+1  A: 

If you're not accustomed to regular expressions, @patrick dw's answer is probably better for you, but this should work as well:

var strSource = "text-123-4567";
var rxNumbers = /\b(\d{3})-(\d{4})\b/
var arrMatches = rxNumbers.exec(strSource);
var strFirstCluster, strSecondCluster;
if (arrMatches) {
    strFirstCluster = arrMatches[1];
    strSecondCluster = arrMatches[2];
}

This will extract the numbers if it is exactly three digits followed by a dash followed by four digits. The expression can be modified in many ways to retrieve exactly the string you are after.

Andrew