Đây là một điều thú vị. Bất cứ ai cũng có một RegEx tốt để chuyển đổi tất cả (đầu tiên)^(giây) thành Math.pow ((đầu tiên), (thứ hai))?RegEx cho^b thay vì pow (a, b)
EDIT:
Điều tốt nhất tôi có cho đến nay là
s = s.replace(/((?:\d+\.?\d*)|\w+|\((?:(?:[^\(\)]*(?:\([^\(\)]*\)))*)\))\s*\^\s*((?:\d+\.?\d*)|\w+|\((?:(?:[^\(\)]*(?:\([^\(\)]*\)))*)\))/g, 'Math.pow($1, $2)') // replace expression^expression with Math.pow($1, $2)
Những câu trả lời cho đến nay chưa đủ nói chung. Họ không bao gồm một cái gì đó như (var1 + var2)^2 cho phép một mình (var1 * (var2 + var3))^2
Giải pháp sẽ phải làm việc với dấu ngoặc đơn.
Bạn có thể sử dụng strfriend.com để giúp trực quan hóa regex khi bạn thực hiện. Đó là những gì tôi đã làm.
Và gần nhất bạn có ngay bây giờ là ...? – Oswald
Điều gì nên 'a * b^c' chuyển đổi thành? 'a^b + c'? 'a^b^c'? –
Điều này không thể thực hiện với regex bình thường. Nó đòi hỏi đệ quy tùy ý. Nếu bạn muốn một câu trả lời tôi đề nghị bạn nâng cao tiền thưởng, đây là một vấn đề khá liên quan. – kelloti