To validate only word simplest regex would be (I think)
/^\w+$/
I want to exclude digits and _
from this (as it accept aa10aa
and aa_aa now, I want to reject them)
I think it can be gained by
/^[a-zA-z]+$/
which means I have to take a different approach other than the previous one.
but what if I want to exclude any character from this range
suppose I will not allow k
,K
,p
,P
or more.
Is there a way to add an excluding list in the range without changing the range.?
?= is a positive lookahead, a type of zero-width assertion. What it's saying is that the captured match must be followed by whatever is within the parentheses but that part isn't captured. Your example means the match needs to be followed by zero or more characters and then a digit (but again that part isn't captured).
To match any character except a list of excluded characters, put the excluded charaters between [^ and ] . The caret ^ must immediately follow the [ or else it stands for just itself. The character '. ' (period) is a metacharacter (it sometimes has a special meaning).
[] denotes a character class. () denotes a capturing group. [a-z0-9] -- One character that is in the range of a-z OR 0-9.
To exclude k
or p
from [a-zA-Z]
you need to use a negative lookahead assertion.
(?![kpKP])[a-zA-Z]+
Use anchors if necessary.
^(?:(?![kpKP])[a-zA-Z])+$
It checks for not of k
or p
before matching each character.
OR
^(?!.*[kpKP])[a-zA-Z]+$
It just excludes the lines which contains k
or p
and matches only those lines which contains only alphabets other than k
or p
.
DEMO
^(?!.*(?:p|k))[a-zA-Z]+$
This should do it.See demo.The negative lookahead will assert that matching word has no p
or k
.Use i
modifier as well.
https://regex101.com/r/vD5iH9/31
var re = /^(?!.*(?:p|k))[a-zA-Z]+$/gmi;
var str = 'One\nTwo\n\nFour\nFourp\nFourk';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With