在javascript中第一个非数字字符上将字符串拆分为数组

Sea*_*ass 0 javascript regex split

我想将一个字符串拆分为一个数组,其中所有前导数字作为一个值,字符串的其余部分作为第二个值:

3px -> Array('3','px')
01b -> Array('01','b')
01 -> Array('01','')
b -> Array('','b')
1.5 -> Array('1','.5')
300,5 -> Array('300',',5')
a1 -> Array('','a1')
Run Code Online (Sandbox Code Playgroud)

在 PHP 中你可以这样做:

$matches = array();
preg_match('/([0-9]+)([^0-9]+)/',$value,$matches);
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

我会使用.match而不是split:匹配并捕获数字,然后匹配并捕获不同捕获组中的其他任何内容:

const doSplit = str => {
  const [, ...arr] = str.match(/(\d*)([\s\S]*)/);
  return arr;
};
console.log(
  doSplit('3px'),
  doSplit('01b'),
  doSplit('01'),
  doSplit('b'),
);
Run Code Online (Sandbox Code Playgroud)

  • (\d*)- 匹配数字
  • ([\s\S]*)- 绝对匹配之后的任何内容