我正在寻找一种方法来获取如下字符串:
let s = '@someone hello that was awesome +5. Rock on!';
并使用正则表达式删除除第一个+
或-
以及紧随的后续数字之外的所有内容。结果将是:
+5
其他例子:
let s = '!#$#$%#$%^%^ -3000absdf' //-3000
let s = 'you get a +1 and a -2000 for your efforts' //+1
let s = s = '+++++++++++++++17 .' //+17
答案 0 :(得分:3)
不要剥离剩下的其他字符,只需在[+-]\d+
上匹配(非全局)。
let a = [
'@someone hello that was awesome +5. Rock on!', //+5
'!#$#$%#$%^%^ -3000absdf', //-3000
'you get a +1 and a -2000 for your efforts', //+1
'+++++++++++++++17 .' //+17
]
var r = /[+-]\d+/
a.forEach(function(s) {
if(r.test(s)) console.log(s.match(r)[0])
})

答案 1 :(得分:1)
全球匹配,然后检查是否匹配
var regExp = /([+-]\d+)/;
var match = regExp.exec('asdfadf +233 asdfadf -23434');
var number = match && match[0];
console.log(number);
var match = regExp.exec('asdfadf34+233jkjkjk asdfadf -23434');
var number = match && match[0];
console.log(number);
var match = regExp.exec('asdfadjkjkjk asdfadf ty3434');
var number = match && match[0];
console.log(number);