[英]how to match this Regular Expressions in javascript
我試圖找到一種方法來解決這個問題,但我迷失了
我希望它匹配一個數學方程式,如果滿足以下條件,它將接受字符串:
有什么幫助嗎?
提前致謝 !!
您要使用的正則表達式如下所示:
-?\d+(?:\.\d+)?([*/%+-]-?\d+(?:\.\d+)?)+
基本上這意味着:
NUMBER (OPER NUMBER)*
數字定義為:
現在,主要的可選減號並不嚴格符合您的要求,因此您可以放心地刪除它,但是如果沒有它,您將無法識別:
-3*-4
這一起違反了您兩個操作數的條件。 丟掉就丟-?
從表達式(在兩個地方),即:
\d+(?:\.\d+)?([*/%+-]\d+(?:\.\d+)?)+
還不清楚您是要接受多個操作數還是只接受一個操作數。 如果只是一個,那么:
-?\d+(?:\.\d+)?[*/%+-]-?\d+(?:\.\d+)?
要么
\d+(?:\.\d+)?[*/%+-]\d+(?:\.\d+)?
或允許空格( \\s
)的變體。 您可能還希望使用括號捕獲組。
您可能需要更改該定義。
您也可以考慮在數字和操作數之間留空格。
用法示例:
var s = "-11.32 * -34";
var r = /(-?\d+(?:\.\d+)?)\s*([*/%+-])\s*(-?\d+(?:\.\d+)?)/;
var m = r.exec(s);
if (m != null) {
alert("First: " + m[1] + "\nOperand: " + m[2] + "\nSecond: " + m[3]);
} else {
alert("Not found");
}
編輯以回答修改后的問題。
[0-9]
[0-9]+
[0-9]+(?:\\.[0-9]+)?
([-+/%*])?([0-9]+(?:\\.[0-9]+)?)
([-+/%*])?([0-9]+(?:\\.[0-9]+)?)(([-+/%*])([0-9]+(?:\\.[0-9]+)?))*
這實際上不是一個等式,因為沒有=符號。
並且您可以在上述任何一個中用\\ d替換[0-9]
。 我有一個明確指定范圍的習慣,因為emacs不會\\ d。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.