首页 > 解决方案 > 正则表达式 2 个字符串中的数字

问题描述

如何从该字符串中提取中间的 2 个数字Price Our: 和以下 数字?|

"Delivery: Price => 30.00 - 45.00 | Price Our: 1900.00 => 1800.00 | Delivery: Contact => 3 - 4 Days | "

我试过(Price Our:.*?(?=\|))但这就是我的正则表达式知识的限制

标签: javascriptregex

解决方案


You could use 2 capture groups:

\bPrice Our: (\d+(?:\.\d+)?) => (\d+(?:\.\d+)?) \|

The pattern matches:

  • \bPrice Our: A word boundary to prevent a partial match, then match Price Our:
  • (\d+(?:\.\d+)?) Capture group 1, match a number with an optional decimal part
  • => Match literally
  • (\d+(?:\.\d+)?) Capture group 2, match a number with an optional decimal part
  • \| Match |

Regex demo

const s = "Delivery: Price => 30.00 - 45.00 | Price Our: 1900.00 => 1800.00 | Delivery: Contact => 3 - 4 Days | ";
const regex = /\bPrice Our: (\d+(?:\.\d+)?) => (\d+(?:\.\d+)?) \|/;
const match = s.match(regex);

if (match) {
  console.log(match[1]);
  console.log(match[2]);
}

In case the digits are at the end of the string, and there is no | following, you can account for that using an alternation to assert the end of the string:

\bPrice Our: (\d+(?:\.\d+)?) => (\d+(?:\.\d+)?)(?: \||$)

Regex demo


推荐阅读