使用正则表达式获取字符串和数字

时间:2012-02-08 08:42:37

标签: javascript regex

我在javascript中有一个字符串,如下所示:

  

一些字符串27

或者可能是

  

一些字符串

  

string 123

甚至

  

string 23A - 或 - string 23 A

换句话说,它总是一个字符串。有时它以数字结尾,有时不结束。有时这个号码最后会有一个字母(只有一个)。

现在的问题是,我必须拆分这个字符串。我需要存储在两个变量中的字符串和数字(​​包括有一个字母)。喜欢在:

  

一些字符串27

var str =“some string” var number = 27;

我可能需要使用正则表达式执行此操作。但我不知道如何。

有人可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:1)

你应该使用这个正则表达式:

var arr = s.match(/^(\D+?)\s*(\d+(?:\s+[A-Z])?)$/i);

然后使用:

var str = arr[1];
var number = arr[2];

假设s是包含原始文本的变量;

答案 1 :(得分:1)

你可以用一个函数来做到这一点:

function splitStringsNumbers(str)
{
    return 
    {
         Numbers: str.match(/[0-9]+/g)
         Strings: str.match(/^[0-9]+/g)
    }
}

现在使用它:

var obj = splitStringsNumbers("string 23A")
console.log(obj.Strings[0]); //print string
console.log(obj.Numbers[0]); //print 23
console.log(obj.Numbers[1]); //print A

如果你想将nubmer作为数字变量, 你可以使用parseInt(str)。 此外,此解决方案仅适用于整数,因为它与浮点数一起使用(如字符串23.4A),您需要更改正则表达式。

答案 2 :(得分:1)

根据你提供的正则表达式应该是:

/(.*) (\d+ ?[A-Z]?)$/i

任何东西都可以是字符串。 数字被锚定到最后,它通过单个空格与字符串分隔,空格和末尾的字母是可选的。

var v='some string 27';
var arr = v.match(/(.*) (\d+ ?[A-Z]?)$/i);
var str = arr[1];
var num = arr[2];

答案 3 :(得分:0)

尝试使用以下正则表达式:

/^([^\d]*)(\d+\s*[a-z]?)?$/i

答案 4 :(得分:0)

试试这个;

var r = new RegExp("/[0-9]+\w?/");
var s = "some letters 125a";
console.log(s.match(r));