我有这个字符串
let tmp = "abcd1234";
我尝试了以下代码,但没有成功。任何人都可以建议。
let tmp = "abcd1234";
var alphas = tmp.split("(?<=\\D)(?=\\d");
console.log(alphas[0],'---',alphas[1])
它返回“ abcd1234 --- undefined”
谢谢。
答案 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);