如何拆分字母和数字?

时间:2018-10-24 11:38:30

标签: javascript

我有这个字符串

let tmp = "abcd1234";

我尝试了以下代码,但没有成功。任何人都可以建议。

let tmp = "abcd1234"; 
var alphas = tmp.split("(?<=\\D)(?=\\d");
console.log(alphas[0],'---',alphas[1])

它返回“ abcd1234 --- undefined”

谢谢。

6 个答案:

答案 0 :(得分:2)

如果您确定将有字母,然后是数字,然后查找其变化的点,请附加一个空格,然后在其上分割:

const tmp = "abcd1234";
const [alpha, numeric] = tmp.replace(/(\D)(\d)/, '$1 $2').split(' ');
console.log(alpha, '---', numeric);

答案 1 :(得分:1)

您的正则表达式为(?<=\\D)(?=\\d),看来您在正则表达式末尾缺少右括号"regex"。完整的正则表达式将变为/regex/

您还将正则表达式包含在let tmp = "abcd1234"; var alphas = tmp.split(/(?<=\D)(?=\d)/); console.log(alphas); console.log(alphas[0],'---',alphas[1])中,并且应该将其包含在const regex = /(\D+)(\d+)/; const str = "abcd1234"; let alphas = regex.exec(str); console.log(alphas[1], '---', alphas[2])

df -h

基于@trichetriche的评论,他说并非所有浏览器都支持正向后视,一种更简单的方法是将字母和数字包含在它们自己的捕获组中,如下所示:

Filesystem      Size  Used Avail Use% Mounted on
udev            241G     0  241G   0% /dev
tmpfs            49G  8.8M   49G   1% /run
/dev/xvda1      7.7G  7.4G  376M  96% /
tmpfs           241G     0  241G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           241G     0  241G   0% /sys/fs/cgroup
/dev/loop0       13M   13M     0 100% /snap/amazon-ssm-agent/495
/dev/loop1       88M   88M     0 100% /snap/core/5328
tmpfs            49G     0   49G   0% /run/user/1000

答案 2 :(得分:1)

let tmp = "abcd1234";
var alphas = tmp.split(/(\d+)/);
console.log(alphas[0], '---', alphas[1])

简单的正则表达式/(\d+)/,它将在行中找到数字并从字母中分离出来

答案 3 :(得分:0)

您也可以使用正则表达式:

let tmp = "abcd1234"; 
let myRegexp = /([a-z]+)([1-9]+)/;
var match = myRegexp.exec(tmp);
console.log(match[1],'---',match[2])

答案 4 :(得分:0)

您可以使用正则表达式吗?这可能是一个入门解决方案

let tmp = "abcd1234"; 
var n = /\d+/.exec(tmp);
var c = /[a-zA-Z]+/.exec(tmp);
console.log(n[0],'---',c[0])

您应该从此处控制是否存在多个匹配项,依此类推。

注意:\ D +将匹配每个字符非数字,因此= +。等会匹配。

更多正则表达式信息:here

正则表达式游乐场:here

答案 5 :(得分:0)

const tmp = "abcdABCD1234";    
const [alpha, numeric] = tmp.split(/(\d+)/);    
console.log(alpha, '---', numeric);