Regex for MongoDB ObjectID

javascript, mongodb, regex

Solution

You can use following regular expression but it will not quite work

checkForHexRegExp = /^(?=[a-f\d]{24}$)(\d+[a-f]|[a-f]+\d)/i

Example:

> checkForHexRegExp.test("112345679065574883030833")
false
> checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF")
false
> checkForHexRegExp.test("45cbc4a0e4123f6920000002")
true

But, as I commented, `112345679065574883030833`, `FFFFFFFFFFFFFFFFFFFFFFFF` are also valid hexadecimal representations.

You should use `/^[a-f\d]{24}$/i` because it passes all the above tests

Problem

With reference to this SO question, I have a scenario where I only need to match a hex string with a-f included. All else should not match. Example: ``` checkForHexRegExp.test("112345679065574883030833"); // => false checkForHexRegExp.test("FFFFFFFFFFFFFFFFFFFFFFFF"); // => false checkForHexRegExp.test("45cbc4a0e4123f6920000002"); // => true ``` My use case is that I am working with a set of hex strings and would like to only validate as true those that are mongodb objectIDs.

Original source

Related problems