我有一堆各种格式的字符串,例如:
a1bbb
aa1bb
a11bbb
aa111bbb
...
我有兴趣获得几个子串:
一个子字符串,包括任何数字,即
a1
aa1
a11
aa111
一个子字符串,最多包括不超过2位,即
a1
aa1
a1
aa11
一个子字符串,只能在任何数字前得到字符,即
a
aa
a
aa
为此,我一直在使用
var prefix = str.match(/^(.+?)\d/);
这似乎有效。这是一个很好的使用方法吗?
谢谢: - )
答案 0 :(得分:2)
要获得任何数字之前的文字,你可以使用:
/^\D*/gm
\D
代表任何非数字,而^
会在开始时与之匹配。
同样不超过2位正则表达式:
/^\D*\d{0,2}/gm
对于任何数字:
/^\D*\d*/gm
答案 1 :(得分:0)
这是一种可能的方式。但是,使用否定的字符类而不是惰性量词+?
更有效,因为惰性量词必须测试它抓取的每个字符的下一个字符。带有贪婪量词的否定字符类没有这个约束,它只需要所有可能的字符并测试下一个子模式。这就是它变得更快的原因:
^([^0-9]+)[0-9]