Hướng dẫn check string is integer javascript - kiểm tra chuỗi là số nguyên javascript

Hai câu trả lời cho bạn:

  • Dựa trên phân tích cú pháp

  • Biểu hiện thông thường

Lưu ý rằng trong cả hai trường hợp, tôi đã giải thích "số nguyên dương" để bao gồm 0, mặc dù 0 không tích cực. Tôi bao gồm các ghi chú nếu bạn muốn không cho phép 0.

Dựa trên phân tích cú pháp

Nếu bạn muốn nó là một chuỗi số nguyên thập phân được chuẩn hóa trong một phạm vi giá trị hợp lý, bạn có thể làm điều này:

function isInDesiredForm(str) {
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}

Hoặc nếu bạn muốn cho phép khoảng trắng và các số không hàng đầu:

function isInDesiredForm(str) {
    str = str.trim();
    if (!str) {
        return false;
    }
    str = str.replace(/^0+/, "") || "0";
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}

Thử nghiệm trực tiếp (không xử lý các số không hoặc khoảng trắng hàng đầu):

Thử nghiệm trực tiếp (với xử lý các số không và khoảng trắng hàng đầu):

Nếu bạn muốn không cho phép 0, chỉ cần thay đổi >= 0 thành > 0. (Hoặc, trong phiên bản cho phép các số không dẫn đầu, xóa

function isInDesiredForm(str) {
    str = str.trim();
    if (!str) {
        return false;
    }
    str = str.replace(/^0+/, "") || "0";
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}
0 trên dòng
function isInDesiredForm(str) {
    str = str.trim();
    if (!str) {
        return false;
    }
    str = str.replace(/^0+/, "") || "0";
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}
1.)

Cách hoạt động:

  1. Trong phiên bản cho phép Whitespace và hàng đầu Zeros:
  • function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    2 loại bỏ bất kỳ không gian trắng hàng đầu và dấu vết.
  • function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    3 bắt được một chuỗi trống và trả về, không có điểm nào trong việc thực hiện phần còn lại của công việc.
  • function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    4 loại bỏ tất cả các 0 đầu từ chuỗi & nbsp; - nhưng nếu điều đó dẫn đến một chuỗi trống, hãy khôi phục một 0.
  1. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    5: Chuyển đổi
    function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    6 thành một số; Số lượng có thể có một phần phân số, hoặc có thể là
    function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    7.

  2. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    8: Cắt ngắn số (cắt bỏ bất kỳ phần phân số nào).

  3. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    9: Chuyển đổi kết quả trở lại thành chuỗi thập phân bình thường. Đối với những con số thực sự lớn, điều này sẽ đi đến ký hiệu khoa học, có thể phá vỡ phương pháp này. . Các số độ chính xác kép chỉ có 15 chữ số chính xác ..)

  4. function isInDesiredForm(str) {
        return /^\+?(0|[1-9]\d*)$/.test(str);
    }
    
    0: So sánh điều đó với chuỗi ban đầu.

  5. function isInDesiredForm(str) {
        return /^\+?(0|[1-9]\d*)$/.test(str);
    }
    
    1: Kiểm tra xem nó có tích cực không.

Lưu ý rằng điều này thất bại đối với đầu vào

function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
2, bất kỳ đầu vào nào trong ký hiệu khoa học không quay trở lại cùng ký hiệu khoa học ở giai đoạn
function isInDesiredForm(str) {
    str = str.trim();
    if (!str) {
        return false;
    }
    str = str.replace(/^0+/, "") || "0";
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}
9 và cho bất kỳ giá trị nào mà loại JavaScript sử dụng (IEEE-754 điểm) không thể biểu thị chính xác phân tích gần với giá trị khác với giá trị đã cho (bao gồm nhiều số nguyên trên 9,007,199,254,740,992; ví dụ,
function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
4 sẽ thất bại). Cái trước là một bản sửa lỗi dễ dàng, hai cái sau không quá nhiều.

Biểu hiện thông thường

Cách tiếp cận khác là kiểm tra các ký tự của chuỗi thông qua biểu thức thông thường, nếu mục tiêu của bạn chỉ cho phép (giả sử) một

function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
5 tùy chọn theo sau là 0 hoặc một chuỗi ở định dạng thập phân bình thường:

function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}

Trực tiếp thử nghiệm:

Cách hoạt động:

  1. Trong phiên bản cho phép Whitespace và hàng đầu Zeros:

  2. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    2 loại bỏ bất kỳ không gian trắng hàng đầu và dấu vết.

  3. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    3 bắt được một chuỗi trống và trả về, không có điểm nào trong việc thực hiện phần còn lại của công việc.

  4. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    4 loại bỏ tất cả các 0 đầu từ chuỗi & nbsp; - nhưng nếu điều đó dẫn đến một chuỗi trống, hãy khôi phục một 0.

  5. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    5: Chuyển đổi
    function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    6 thành một số; Số lượng có thể có một phần phân số, hoặc có thể là
    function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    7.

  6. function isInDesiredForm(str) {
        str = str.trim();
        if (!str) {
            return false;
        }
        str = str.replace(/^0+/, "") || "0";
        var n = Math.floor(Number(str));
        return n !== Infinity && String(n) === str && n >= 0;
    }
    
    8: Cắt ngắn số (cắt bỏ bất kỳ phần phân số nào).

function isInDesiredForm(str) {
    str = str.trim();
    if (!str) {
        return false;
    }
    str = str.replace(/^0+/, "") || "0";
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}
9: Chuyển đổi kết quả trở lại thành chuỗi thập phân bình thường. Đối với những con số thực sự lớn, điều này sẽ đi đến ký hiệu khoa học, có thể phá vỡ phương pháp này. . Các số độ chính xác kép chỉ có 15 chữ số chính xác ..)

function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
0: So sánh điều đó với chuỗi ban đầu.

function isInDesiredForm(str) {
    return /^\+?\d+$/.test(str);
}

function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
1: Kiểm tra xem nó có tích cực không.

Lưu ý rằng điều này thất bại đối với đầu vào

function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
2, bất kỳ đầu vào nào trong ký hiệu khoa học không quay trở lại cùng ký hiệu khoa học ở giai đoạn
function isInDesiredForm(str) {
    str = str.trim();
    if (!str) {
        return false;
    }
    str = str.replace(/^0+/, "") || "0";
    var n = Math.floor(Number(str));
    return n !== Infinity && String(n) === str && n >= 0;
}
9 và cho bất kỳ giá trị nào mà loại JavaScript sử dụng (IEEE-754 điểm) không thể biểu thị chính xác phân tích gần với giá trị khác với giá trị đã cho (bao gồm nhiều số nguyên trên 9,007,199,254,740,992; ví dụ,
function isInDesiredForm(str) {
    return /^\+?(0|[1-9]\d*)$/.test(str);
}
4 sẽ thất bại). Cái trước là một bản sửa lỗi dễ dàng, hai cái sau không quá nhiều.