From 1bf00948fd60367db1645261ca5ce7d6aef097b6 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 13 Oct 2019 19:38:27 +0900 Subject: [PATCH] fix: add validation for '0x'-prefixed hex strings (#1147) * Added validation for '0x'-prefixed hex strings. * Added 0h-prefix as an acceptable hexadecimal format. --- lib/isHexadecimal.js | 2 +- src/lib/isHexadecimal.js | 2 +- test/validators.js | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/isHexadecimal.js b/lib/isHexadecimal.js index fd894f860..93752a5b6 100644 --- a/lib/isHexadecimal.js +++ b/lib/isHexadecimal.js @@ -9,7 +9,7 @@ var _assertString = _interopRequireDefault(require("./util/assertString")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var hexadecimal = /^[0-9A-F]+$/i; +var hexadecimal = /^(0x)?[0-9A-F]+$/i; function isHexadecimal(str) { (0, _assertString.default)(str); diff --git a/src/lib/isHexadecimal.js b/src/lib/isHexadecimal.js index 1e4f17e03..19adb077a 100644 --- a/src/lib/isHexadecimal.js +++ b/src/lib/isHexadecimal.js @@ -1,6 +1,6 @@ import assertString from './util/assertString'; -const hexadecimal = /^[0-9A-F]+$/i; +const hexadecimal = /^(0x|0h)?[0-9A-F]+$/i; export default function isHexadecimal(str) { assertString(str); diff --git a/test/validators.js b/test/validators.js index 2043af8bd..3bae22e9d 100644 --- a/test/validators.js +++ b/test/validators.js @@ -2495,11 +2495,23 @@ describe('Validators', () => { valid: [ 'deadBEEF', 'ff0044', + '0xff0044', + '0XfF0044', + '0x0123456789abcDEF', + '0X0123456789abcDEF', + '0hfedCBA9876543210', + '0HfedCBA9876543210', + '0123456789abcDEF', ], invalid: [ 'abcdefg', '', '..', + '0xa2h', + '0xa20x', + '0x0123456789abcDEFq', + '0hfedCBA9876543210q', + '01234q56789abcDEF', ], }); });