Skip to content

Commit ced6502

Browse files
authored
Merge pull request #205 from webdeveric/dev
Updated `RegExp` for `isNumericString()`
2 parents a65f08c + fb70fba commit ced6502

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/predicate/isNumericString.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ import { matching } from './factory/matching.js';
22

33
import type { NumericString } from '../types/common.js';
44

5-
export const isNumericString = matching<NumericString>(/^[-+]?\d+(\.\d+)?$/);
5+
export const isNumericString = matching<NumericString>(/^[-+]?(\d+(\.\d+)?|\.\d+)$/);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { describe, it, expect } from 'vitest';
2+
3+
import { isNumericString } from '../../src/predicate/isNumericString.js';
4+
5+
describe('isNumericString()', () => {
6+
it.each(['1', '2.3', '-4', '+5.67', '.89', '-0', '+0'])('Returns true for valid input: %s', (input) => {
7+
expect(isNumericString(input)).toBeTruthy();
8+
});
9+
10+
it.each(['', 'not numeric', Symbol('test'), null, undefined, Number.MAX_SAFE_INTEGER])(
11+
'Returns false for invalid input: %s',
12+
(input) => {
13+
expect(isNumericString(input)).toBeFalsy();
14+
},
15+
);
16+
17+
it('Can be used with Array.filter()', () => {
18+
expect(['1', null, 2, undefined, '3.14'].filter(isNumericString)).toEqual(['1', '3.14']);
19+
});
20+
});

0 commit comments

Comments
 (0)