å¼ããã¼ã¹ãã
ç®è¡å¼ã¯2ã¤ã®æ°åã¨ãããã®éã®æ¼ç®åã§æ§æããã¾ãã:
1 + 21.2 * 3.4-3 / -6-2 - 2
æ¼ç®å㯠"+", "-", "*" ã¾ã㯠"/" ã®ããããã§ãã
å é ãæ«å°¾ãéã«ä½åãªã¹ãã¼ã¹ãããããããã¾ããã
å¼ãåãã3ã¤ã®ã¢ã¤ãã ãæã¤é
åãè¿ã parse(expr) ã使ãã¦ãã ããã
- æåã®æ°å¤
- æ¼ç®å
- 2çªç®ã®æ°å¤
ä¾:
let [a, op, b] = parse("1.2 * 3.4");
alert(a); // 1.2
alert(op); // *
alert(b); // 3.4
æ°å¤ã®æ£è¦è¡¨ç¾ã¯: -?\d+(\.\d+)? ã§ããåã®ã¿ã¹ã¯ã§ä½ã£ããã®ã§ãã
æ¼ç®åã¯ã[-+*/] ã§ããããã·ã¥ - ãå
é ã«ç½®ãã¾ããä¸å¤®ã«ããå ´åãããã·ã¥ã¯æåã®ç¯å²ãæå³ãã¾ãããããã¯å¿
è¦ãªãããã§ãã
JavaScript ã®æ£è¦è¡¨ç¾ /.../ ã®ä¸ã§ã¯ã¹ã©ãã·ã¥ãã¨ã¹ã±ã¼ãããå¿
è¦ããããã¨ã«æ³¨æãã¦ãã ããã
ç§ãã¡ã¯ãæ°å¤ãæ¼ç®åãããã¦å¥ã®æ°å¤ãå¿ è¦ã§ããããã¦ãããã®éã«ã¹ãã¼ã¹ãããå ´åãããã¾ãã
å®å
¨ãªæ£è¦è¡¨ç¾ã¯æ¬¡ã®ããã«ãªãã¾ã: -?\d+(\.\d+)?\s*[-+*/]\s*-?\d+(\.\d+)?.
é
åã¨ãã¦çµæãåå¾ãããããå¿
è¦ãªãã¼ã¿ã®å¨ãã«æ¬å¼§ãç½®ãã¾ããã: æ°å¤ã¨æ¼ç®åã§ã: (-?\d+(\.\d+)?)\s*([-+*/])\s*(-?\d+(\.\d+)?).
åä½:
let reg = /(-?\d+(\.\d+)?)\s*([-+*\/])\s*(-?\d+(\.\d+)?)/;
alert( "1.2 + 12".match(reg) );
çµæã¯æ¬¡ã®å 容ãå«ã¿ã¾ã:
result[0] == "1.2 + 12"(å®å ¨ãªããã)result[1] == "1"(æåã®æ¬å¼§)result[2] == "2"(2çªç®ã®æ¬å¼§ â å°æ°é¨(\.\d+)?)result[3] == "+"(â¦)result[4] == "12"(â¦)result[5] == undefined(æå¾ã¯å°æ°é¨ããªãã®ã§ undefined ã§ã)
å¿ è¦ãªã®ã¯æ°å¤ã¨æ¼ç®åã ãã§ããå°æ°é¨ã ãã¯ä¸è¦ã§ãã
ãªã®ã§ã(?:\.\d+)? ã®ããã«ã?: ã追å ãããã¨ã§ããã£ããã£ã°ã«ã¼ãããä½åãªã°ã«ã¼ããåãé¤ãã¾ãããã
æçµçãªè§£æ³ã¯æ¬¡ã®éãã§ã:
function parse(expr) {
let reg = /(-?\d+(?:\.\d+)?)\s*([-+*\/])\s*(-?\d+(?:\.\d+)?)/;
let result = expr.match(reg);
if (!result) return;
result.shift();
return result;
}
alert( parse("-1.23 * 3.45") ); // -1.23, *, 3.45