查找字符串中的数字,不在javascript中的任何字母之前或之后

时间:2016-08-11 16:26:57

标签: javascript regex

我不熟悉正则表达式。 即时通讯试图找出如何在一个字符串中找到一个数字,该数字前面或后跟一个带有javascript的字母

s= "sc010sc"
//shouldnt return 

s = "x0001"
//shouldnt return 

s = "thing_0001_5642"
//return [0001, 5642]



s = "05012"
//return 05012

1 个答案:

答案 0 :(得分:1)

您可以使用

var rx = /(?:^|[^a-z0-9])(\d+)(?![0-9a-z])/ig;
var s = "thing_0001_5642";// with "sc010sc" it does not return any result
var res = [];
while((m=rx.exec(s)) !== null) {
	res.push(m[1]);
}
console.log(res);

模式详情

  • (?:^|[^a-z0-9]) - 字符串开头或非数字和非字母
  • (\d+) - 第1组捕获1个或多个数字
  • (?![0-9a-z]) - 没有后跟数字或字母。

由于使用了/i修饰符,因此所有ASCII字母都与[a-z]匹配。

由于我们需要访问捕获的值,因此我在循环中使用RegExp#exec仅获取match[1]值。