请问正则如何从后向前匹配

从后向前匹配到字符串中第一个2个连续的数字.比如: '20S08060a9'想匹配到'60'

追加提问:
匹配到60后需要获取到60当前在文字中的索引.

阅读 11k
5 个回答

/\d(?!.*\d{2})\d/

翻转字符串,再将结果翻转回去

//定义字符串翻转方法
const reverseStr = (str)=>{
return str.split('').reverse().join('');
}
reverseStr("20S08060a9").match(/\d{2}/g).map(e=>reverseStr(e))

要取索引,Fractal的方案思路套用一下也可以得到。

'20S08060a9'.match(/^(.*)(\d{2}).*$/)
//得到 [ "20S08060a9", "20S080", "60" ] 其中"20S080"的长度不就是你要的索引的。

$ 匹配尾部
/^.*(\d{2}).*$/

正则匹配的数量限定符(?+*)默认就是贪婪的,所以目标字符的前面使用贪婪限定符就好了
/[\S\s]*(\d{2})/
.不能匹配换行,所以使用[\s\S]匹配所有字符

var str = "20S08060a9";
var num = str.match(/\d{2}(?!\d)/g).pop();
var index = str.lastIndexOf(num);
console.log(num, index);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题