Javascript js get子字符串,最多前N位

Javascript js get子字符串,最多前N位,javascript,regex,Javascript,Regex,我有一堆不同格式的字符串,例如: a1bbb aa1bb a11bbb aa111bbb ... 我想得到几个子字符串: 一个包含任意数字的子串,即 a1 aa1 a11 aa111 a1 aa1 a1 aa11 一个不超过2位的子串,即 a1 aa1 a11 aa111 a1 aa1 a1 aa11 和一个子串,只获取任何数字前的字符,即 a aa a aa 我一直在用这个 var prefix = str.match(/^(.+?)\d/); 这似乎奏效了。这是一个好方法吗 感

我有一堆不同格式的字符串,例如:

a1bbb
aa1bb
a11bbb
aa111bbb
...
我想得到几个子字符串:

一个包含任意数字的子串,即

a1
aa1
a11
aa111
a1
aa1
a1
aa11
一个不超过2位的子串,即

a1
aa1
a11
aa111
a1
aa1
a1
aa11
和一个子串,只获取任何数字前的字符,即

a
aa
a
aa
我一直在用这个

var prefix = str.match(/^(.+?)\d/);
这似乎奏效了。这是一个好方法吗


感谢:-)

在您可以使用的任何数字之前获取文本:

/^\D*/gm
其中,
\D
表示任何非数字,
^
将在开始时匹配它们

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

/^\D*\d{0,2}/gm
对于任何数字:

/^\D*\d*/gm

这是一种可能的方法。但是,使用否定字符类而不是惰性量词
+?
性能更高,因为惰性量词必须为其捕获的每个字符测试下一个字符。一个带有贪婪量词的否定字符类没有这个约束,它接受所有可能的字符,然后测试下一个子模式。这就是它速度更快的原因:

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