簡體   English   中英

JavaScript中的復雜正則表達式

[英]Complex regular expression in JavaScript

我有這個任務:將字符串中的所有數字求和並執行乘法

input: "3 chairs, 2 tables, 2*3 forks"
result: 11

我已經有正則表達式可以做到這一點:

eval(str.match(/(\d[\d\.\*]*)/g).join(' + '))

但我想添加選項以忽略方括號“()”中的數字

input: "2 chairs, 3 tables (1 broke)"
result: 5

怎么做?

正則表達式總是讓我痛苦:(

一種簡單的方法是進行第一遍並刪除所有帶括號的表達式。

str = str.replace(/\([^\)]*\)/g, "");
// now run your original algorithm to sum/multiply...
// ...

這不是超級有效,但可以完成工作。

我應該注意,這不處理嵌套的括號,但在這里似乎不是必需的。

(?=(\d+[\d.*]*)(?![^(]*?\)))\1

(?=(開始使用前瞻性捕獲一個組

(\d+[\d.*]*)

是您的號碼的捕獲組

(?![^(]*?\))

是一個負向正向查找,可確保在數字后沒有開括號

)\1

期待這里的末端與找到的號碼匹配。

您可以使用indexOf()lastIndexOf()來檢測最外面的括號,以便擺脫想要的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM