以不同的格式提取字符串的数字和文本部分

时间:2017-07-26 15:10:29

标签: javascript regex

我正在尝试整合一个RegEx来分割各种可能的用户输入,虽然我已经设法在某些情况下取得了成功,但我还是没有设法涵盖我想要的每一个案例。< / p>

可能的输入和预期的输出

"1 day" > [1,"day"]
"1day" > [1,"day"]
"10,000 days" > [10000,"days"]

是否可以从字符串中拆分数字和文本部分而不必有空格,同时也可以从字符串中删除逗号等?

This is what I've got at the moment

[a-zA-Z]+|[0-9]+

这似乎很好地分割了数字和文本部分,但是被逗号绊倒了。 (实际上,当我写这篇文章时,我想我可以使用结果数组的最后一部分作为文本部分,并将所有其他部分连接成数字部分?)

2 个答案:

答案 0 :(得分:1)

除了从匹配的数字字符串中删除逗号外,此正则表达式仍然有效:

([0-9,]+]) *(.*)

你不能忽视&#34;返回的正则表达式匹配字符串中的字符,因此您只需要在之后从返回的正则表达式匹配中删除逗号。

答案 1 :(得分:1)

&#13;
&#13;
var test = [
    '1 day',
    '1day',
    '10,000 days',
];
console.log(test.map(function (a) {
  a = a.replace(/(\d),(\d)/g, '$1$2'); // remove the commas
  return a.match(/^(\d+)\s*(.+)$/);    // split in two parts
}));
&#13;
&#13;
&#13;