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

    提示:
    注意要考虑全面思路:考虑所有情况
    1,只能出现数字、符号位、小数点、指数位
    2,小数点,指数符号只能出现一次、且不能出现在开头结尾
    3,指数位出现后,小数点不允许在出现4,符号位只能出现在开斗和指数位后面

    1. // 使用正则
    2. function foo(str){
    3. return /^(\+|\-)?\d+(\.\d+)?(\e\d+)?((\.\d)?\e(\+|\-)\d+)?$/ig.test(str)
    4. }
    5. // 使用if
    6. function isNumeric(s){
    7. if(s== undefined) return
    8. let hasPoint = false;
    9. let hasExp = false
    10. for(let i = 0; i < s.length;i++){
    11. const target = s[i];
    12. if(target >= 0 && target <=9){
    13. continue;
    14. } else if(target === 'e' || target === 'E'){
    15. if(hasExp || i ===0 || i ===s.length -1){
    16. return false
    17. } else {
    18. hasPoint = true;
    19. continue;
    20. }
    21. } else if(target === '-' || target === '+'){
    22. if(i===0 || s[i-1] === 'e' || s[i-1] ==='E'){
    23. continue;
    24. } else {
    25. return false;
    26. }
    27. } else {
    28. return false;
    29. }
    30. }
    31. return true;
    32. }