js获得前N个数字的子字符串

时间:2015-02-12 15:39:32

标签: javascript regex

我有一堆各种格式的字符串,例如:

a1bbb
aa1bb
a11bbb
aa111bbb
...

我有兴趣获得几个子串:

一个子字符串,包括任何数字,即

a1
aa1
a11
aa111

一个子字符串,最多包括不超过2位,即

a1
aa1
a1
aa11

一个子字符串,只能在任何数字前得到字符,即

a
aa
a
aa

为此,我一直在使用

var prefix = str.match(/^(.+?)\d/);

这似乎有效。这是一个很好的使用方法吗?

谢谢: - )

2 个答案:

答案 0 :(得分:2)

要获得任何数字之前的文字,你可以使用:

/^\D*/gm

\D代表任何非数字,而^会在开始时与之匹配。

同样不超过2位正则表达式:

/^\D*\d{0,2}/gm

对于任何数字:

/^\D*\d*/gm

RegEx Demo

答案 1 :(得分:0)

这是一种可能的方式。但是,使用否定的字符类而不是惰性量词+?更有效,因为惰性量词必须测试它抓取的每个字符的下一个字符。带有贪婪量词的否定字符类没有这个约束,它只需要所有可能的字符并测试下一个子模式。这就是它变得更快的原因:

^([^0-9]+)[0-9]