简体   繁体   中英

regex 2 numbers from a string

How can I pull out the 2 numbers in-between Price Our: and the following | from this string?

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

I tried (Price Our:.*?(?=\\|)) But thats the limit of my regex knowledge

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

(\\d*\\.\\d+)

regex101 explanation:

在此处输入图片说明

 const regex = /(\\d*\\.\\d+)/gm; const str = "Delivery: Contact => 3 - 4 Days | Price Our: 1900.00 => 1800.00 | Delivery: Contact => 3 - 4 Days | "; const res = str.match(regex) console.log(res)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM