I’d like a regular expression to match a string only if it contains a character that occurs a predefined number of times.
For example:
I want to match all strings that contain the character “_” 3 times;
So
“a_b_c_d” would pass
“a_b” would fail
“a_b_c_d_e” would fail
Does someone know a simple regular expression that would satisfy this?
Thank you
For your example, you could do:
(with an ignore case flag).
You can play with it here
It says “match 0 or more letters, followed by ‘_[a-z]*’ exactly three times, followed by 0 or more letters”. The
\bmeans “word boundary”, ie “match a whole word”.Since I’ve used ‘*’ this will match if there are exactly three “_” in the word regardless of whether it appears at the start or end of the word – you can modify it otherwise.
Also, I’ve assumed you want to match all words in a string with exactly three “_” in it.
That means the string “a_b a_b_c_d” would say that “a_b_c_d” passed (but “a_b” fails).
If you mean that globally across the entire string you only want three “_” to appear, then use:
This anchors the regex at the start of the string and goes to the end, making sure there are only three occurences of “_” in it.