• 剑指offer(53)表示数值的字符串


    题目描述

    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

    题目分析

    一般当我们看到判断字符串,就可以联想到正则表达式,这里用正则表达式确实可以好做很多。当然也有不用正则表达式的做法,不过就比较复杂了,有很多分支,类似状态机。

    但是我觉得那个真的比较麻烦,没必要深究。

    正则表达式也有很多种写法,仁者见仁,智者见智。在这里就给出两种正则表达式的解法。

    代码

    第一种:

    // 第一种
    function isNumeric(s) {
      return s.match(/[+-]?d*(.d*)?([eE][+-]?d+)?/g)[0] === s;
    }

    第二种:

    function isNumeric2(s) {
      return s.search(/^[+-]?d*(.d*)?$/) === 0 || s.search(/^[+-]?d+(.d*)?[Ee]{1}[+-]?d+$/) === 0;
    }
  • 相关阅读:
    【bzoj2242】[SDOI2011]计算器
    1109解题报告
    【bzoj3239】Discrete Logging
    【bzoj2480】Spoj3105 Mod
    【POJ1811】Prime Test
    【bzoj3667】Rabin-Miller算法
    【HDU2138】How many prime numbers
    卢卡斯定理
    线段树2
    畅快的甩卖
  • 原文地址:https://www.cnblogs.com/wuguanglin/p/isNumeric.html
Copyright © 2020-2023  润新知