Fix isNumericString incorrectly accepting strings with surrounding whitespace

This commit is contained in:
Sindre Sorhus 2026-04-08 05:21:23 +07:00
parent 3b40955b02
commit 47415dc46a
2 changed files with 5 additions and 1 deletions

View file

@ -688,7 +688,7 @@ export function isNumber(value: unknown): value is number {
} }
export function isNumericString(value: unknown): value is `${number}` { export function isNumericString(value: unknown): value is `${number}` {
return isString(value) && !isEmptyStringOrWhitespace(value) && !Number.isNaN(Number(value)); return isString(value) && !isEmptyStringOrWhitespace(value) && value === value.trim() && !Number.isNaN(Number(value));
} }
// eslint-disable-next-line @typescript-eslint/no-restricted-types // eslint-disable-next-line @typescript-eslint/no-restricted-types

View file

@ -587,6 +587,10 @@ test('is.numericString supplemental', () => {
assert.strictEqual(is.numericString(' '), false); assert.strictEqual(is.numericString(' '), false);
assert.strictEqual(is.numericString(' \t\t\n'), false); assert.strictEqual(is.numericString(' \t\t\n'), false);
assert.strictEqual(is.numericString(1), false); assert.strictEqual(is.numericString(1), false);
assert.strictEqual(is.numericString(' 5'), false);
assert.strictEqual(is.numericString('5 '), false);
assert.strictEqual(is.numericString(' 5 '), false);
assert.strictEqual(is.numericString('\t3'), false);
assert.throws(() => { assert.throws(() => {
isAssert.numericString(''); isAssert.numericString('');
}); });