Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ console.log(isValidEmail('[email protected]')); // true

### `isValidNumber(value, allowZero, allowNegative)`

- Validates if a value of type string is a valid number
- Validates if a value of type string or number is a valid number
- If allowZero equals true, '0' would return true
- If allowNegative equals true, negative values would return true

Expand All @@ -92,11 +92,13 @@ console.log(isValidNumber('123a424', true, true)); // false
console.log(isValidNumber('123a424', false, true)); // false
console.log(isValidNumber('1.23a424', false, true)); // false
console.log(isValidNumber('123-424', false, true)); // false
console.log(isValidNumber('0')); // false
console.log(isValidNumber('0')); // false
console.log(isValidNumber('0', true)); // true
console.log(isValidNumber('-1', true, true)); // true
console.log(isValidNumber('201')); // true
console.log(isValidNumber('3.14159')); // true
console.log(isValidNumber(452)); // true
console.log(isValidNumber(3.1459)); // true
```


Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cobuildlab/validation-utils",
"version": "0.0.3",
"version": "0.0.4",
"description": "This is package to deal with common scenarios working with Javascript validations",
"main": "lib/index.js",
"types": "./lib/index.d.ts",
Expand Down
13 changes: 12 additions & 1 deletion src/__tests__/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import {
isValidEmail,
isValidNumber,
isValidInteger,
isValidDate
isValidDate,
isStringAValidNumber
} from '../index';

test('isNullOrUndefined:', () => {
Expand Down Expand Up @@ -79,4 +80,14 @@ test('isValidDate', () => {
expect(isValidDate('2020-06-26', 'YYYY-MM-DD')).toBe(true);
expect(isValidDate('Mar 25 2015', 'MMM DD YYYY')).toBe(true);
expect(isValidDate('Tue Mar 24 2015 19:30:00', 'ddd MMM DD YYY HH:mm:ss')).toBe(true);
})

test('isStringAValidNumber', () => {
expect(isStringAValidNumber('')).toBe(false);
expect(isStringAValidNumber('Some string')).toBe(false);
expect(isStringAValidNumber('04939-343.643')).toBe(false);

expect(isStringAValidNumber('2020')).toBe(true);
expect(isStringAValidNumber('5731')).toBe(true);
expect(isStringAValidNumber('3.1415')).toBe(true);
})
26 changes: 21 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,19 +57,19 @@ export const isValidEmail = (email: string): boolean => {
/**
* Validate if a string is a valid number.
*
* @param {string} stringToTest - The string to validate as a number.
* @param {string} value - The string to validate as a number.
* @param {boolean} [allowZero=false] - If the string should accept 0 as a valid number.
* @param {boolean} [allowNegative=false] - If the string should negative values.
*
* @returns {boolean} If the string is valid number or not.
*/
export const isValidNumber = (stringToTest: string, allowZero: boolean = false, allowNegative: boolean = false): boolean => {
export const isValidNumber = (value: string, allowZero: boolean = false, allowNegative: boolean = false): boolean => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
export const isValidNumber = (value: string, allowZero: boolean = false, allowNegative: boolean = false): boolean => {
export const isValidNumber = (value: number, allowZero: boolean = false, allowNegative: boolean = false): boolean => {
if(!typeof number !== "number") return false;

const regExp = /^(-?[0-9]+)((\.|,)[0-9]+)?$/;

if (!regExp.test(stringToTest))
if (!regExp.test(value))
return false;

const numberToTest = parseInt(stringToTest, 10);
const numberToTest = parseInt(value, 10);

if (isNaN(numberToTest) || typeof numberToTest !== 'number') return false;

Expand Down Expand Up @@ -112,4 +112,20 @@ export const isValidDate = (date: string, format?: string): boolean => {
return moment(date).isValid();

return moment(date, format, true).isValid();
};
};

/**
* Validate if the provided string is a valid number
*
* @param {string} value - The value to check
*
* @returns {boolean} Returns if the specified value is a valid number or not
*/
export const isStringAValidNumber = (value: string) => {
if (value === '')
return false;

const number = Number(value);

return Number.isNaN(number) ? false : true;
}