正面回顾和 Safari 解决方法
Positive lookbehind and Safari workaround
所以我有一个这样的行文件....
valueA +920.32 % valueA +479.89%
valueB +886.82 % valueB +424.59%
--- insert more similar lines ---
我使用以下正则表达式仅获取两个百分比并将它们存储在数组中
myObject.valueA = text.match(/(?<=valueA)(?:.+?(?=%))/g);
结果如我所愿
valueA: Array [ " +920.32 ", " +479.89" ]
我对此非常满意,并继续推进我的小项目,直到我试图与我的朋友在 iPhone 上测试它,但没有任何反应。我发现这是由于 safari 不支持积极的背后观察,所以我一直在寻找可以产生类似结果的东西。
以积极的眼光看,我接近了,但结果中包含 'valueA ',我真的不想用额外的代码行删除它。
(?=valueA)(?:.+?(?=%))
结果
valueA: Array [ "valueA +920.32 ", "valueA +479.89" ]
我确信有一种简单的方法可以做到这一点,但我一直在 RegExr 上闲逛,但没有成功。提前谢谢你。
如果数据确实如此,为什么不只捕获 +、. 和数字? ([\+\d\.]+)
const text = `valueA +920.32 % valueA +479.89%`;
console.log(text.match(/([\+\d\.]+)/g))
您可以使用 matchAll
method 中的捕获组来解决此问题:
const s = `valueA +920.32 % valueA +479.89%
valueB +886.82 % valueB +424.59%`
var arr = [...s.matchAll(/\bvalueA\s+([^\s%]+)/g)]
arr.forEach(el => console.log( el[1] ))
所以我有一个这样的行文件....
valueA +920.32 % valueA +479.89%
valueB +886.82 % valueB +424.59%
--- insert more similar lines ---
我使用以下正则表达式仅获取两个百分比并将它们存储在数组中
myObject.valueA = text.match(/(?<=valueA)(?:.+?(?=%))/g);
结果如我所愿
valueA: Array [ " +920.32 ", " +479.89" ]
我对此非常满意,并继续推进我的小项目,直到我试图与我的朋友在 iPhone 上测试它,但没有任何反应。我发现这是由于 safari 不支持积极的背后观察,所以我一直在寻找可以产生类似结果的东西。
以积极的眼光看,我接近了,但结果中包含 'valueA ',我真的不想用额外的代码行删除它。
(?=valueA)(?:.+?(?=%))
结果
valueA: Array [ "valueA +920.32 ", "valueA +479.89" ]
我确信有一种简单的方法可以做到这一点,但我一直在 RegExr 上闲逛,但没有成功。提前谢谢你。
如果数据确实如此,为什么不只捕获 +、. 和数字? ([\+\d\.]+)
const text = `valueA +920.32 % valueA +479.89%`;
console.log(text.match(/([\+\d\.]+)/g))
您可以使用 matchAll
method 中的捕获组来解决此问题:
const s = `valueA +920.32 % valueA +479.89%
valueB +886.82 % valueB +424.59%`
var arr = [...s.matchAll(/\bvalueA\s+([^\s%]+)/g)]
arr.forEach(el => console.log( el[1] ))