JavaScript正则表达式:分割数字和字母

15

我需要一个正则表达式模式将一个字符串按数字和字母分割。例如:.1abc2.5efg3mno应被分割为[".1","abc","2.5","efg","3","mno"]

我尝试过的当前正则表达式是:

var str = ".1abc2.5efg3mno";
regexStr= str.match(/[a-zA-Z]+|[0-9]+(?:\.[0-9]+|)/g);

得到的输出为:

["1","abc","2.5","efg","3","mno"]

数字.1被视为1,而我需要它作为.1


2
str.match(/[a-zA-Z]+|[0-9]+(?:\.[0-9]+)?|\.[0-9]+/g); - Pranav C Balan
谢谢,它起作用了。 - Monisha
2个回答

31

如果只涉及将字母与非字母字符分开,那么正则表达式可以非常简单:

var str = ".1abc2.5efg3mno";
var regexStr = str.match(/[a-z]+|[^a-z]+/gi);
console.log(regexStr);

即匹配一组字母或一组非字母字符。


嗨,@Biffen,你能帮我理解这个regexStr的含义以及在str.match()中它的作用吗? - Avinash jain
@Avinashjain regex101 对每个部分都进行了深入的解释。 - Biffen
非常感谢!@biffen - Avinash jain

4

var z = ".1abc2.5efg3mno".match(/[\d\.]+|\D+/g);
console.log(z);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接