-2

我收到了以下格式的变量:

var fubar = e2s2

现在,字母始终相同,但数字确实发生了变化。数字只能是 1-9。最终结果我需要这样的东西:

var foo = e2
var bar = s2

我也会满足于这个数字。我只需要有数字。

4

5 回答 5

3

如果它始终采用这种形式,则不需要 RegEx。

var foo = fubar.substr(0,2),
    bar = fubar.substr(2);

..或者,如果您只想要数字:

var foo = fubar.substr(1,1),
    bar = fubar.substr(3);

如果您真的需要 RegEx 解决方案,如何:

var digits = fubar.replace(/\d/g, '').split(''),
    foo    = digits[0],
    bar    = digits[1];

一百万种方法来解决它。但是除非你真的需要它,否则请避免使用 RegEx。

干杯

于 2012-10-19T17:53:17.757 回答
1

这与split method

(?![1-9])

或者

(?=[^1-9])

笔记:

用于(?![1-9]|^)避免包含在结果数组中的空格

于 2012-10-19T17:53:54.437 回答
1
var fubar = 'e2s2' ;

var foo = fubar.substr(0,2) ;
var bar = fubar.substr(2);

小提琴

于 2012-10-19T17:54:25.613 回答
1

使用正则表达式替换。以下代码将起作用

var fubar = "e2s2";
var a = fubar.replace(/\d/g, function(arg){ return arg+ ","}).split(",");
a.pop(); // removing last item.
var foo = a[0];
 var bar = a[1];
于 2012-10-19T17:55:55.033 回答
0

如果元素的格式总是一个非数字字符后跟一个数字字符,则使用

elements = str.split(/(?=\D)/) 

获取数组中的完整元素;并仅获取数字(数字)数组,请使用

(numbers = str.split(/\D/)).splice(0, 1);
于 2012-10-19T18:14:52.363 回答