我不熟悉正则表达式。 即时通讯试图找出如何在一个字符串中找到一个数字,该数字前面或后跟一个带有javascript的字母
s= "sc010sc"
//shouldnt return
s = "x0001"
//shouldnt return
s = "thing_0001_5642"
//return [0001, 5642]
s = "05012"
//return 05012
答案 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]
值。