I am trying to make a regex test that returns true for the following conditions:
- Can only have letters A-F (case insensitive)
- First character must be ‘#’
- Can have numbers 0-9
- Does not have punctuation
The order does not matter except that string[0] should be ‘#’.
So far I have: /^#[A-F0-9^!G-Z]/i
but for some reason, it returns strings that have letters after F (like G or J) as true.
Advertisement
Answer
You can use
^#[0-9A-Fa-f]*$
Details:
^
– start of string#
– a hash symbol[0-9A-Fa-f]*
– zero or more hex chars (note it can be written as[[:xdigit:]]*
in some regex flavors, but not in ECMAScript flavor used in JavaScript)$
– end of string.