我在javascript中有一个字符串,如下所示:
一些字符串27
或者可能是
一些字符串
或
string 123
甚至
string 23A - 或 - string 23 A
换句话说,它总是一个字符串。有时它以数字结尾,有时不结束。有时这个号码最后会有一个字母(只有一个)。
现在的问题是,我必须拆分这个字符串。我需要存储在两个变量中的字符串和数字(包括有一个字母)。喜欢在:
一些字符串27
var str =“some string” var number = 27;
我可能需要使用正则表达式执行此操作。但我不知道如何。
有人可以帮我解决这个问题吗?
答案 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));