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]