Problem with simple regex
I have the following regular expression in a validation rule:
^[a-zA-Z0-9',!;?~>+&\"\-@#%*.\s]{1,1000}$
However, I can enter ====== which I believe should not be allowed.
My thoughts is that somehow the -开发者_如何转开发 could cause trouble if not properly escaped or something but this is way over my head.
The regex you've shown us with the - escaped does not accept ===.
But if - is not escaped, === will be accepted. See this.
A - inside a regex is special and is used as range operator if it's not escaped and is surrounded by characters which participate as min and max in the range:
[a-z] matches any lowercase character.
[-az] matches either a - or a or z.
[az-] matches either a - or a or z.
[a\-z] matches either a - or a or z.
[a-c-d-f] matches a or b or c or - or d or e or f. The first and last - act as range operator but the one in the middle is treated literally.
In your case the = comes in the range "-@ and hence gets matched.
.
matches on everything. You want
\.
The - will be interpreted as a range indicator. You need to put it either first or last within the [] brackets if you want to match a literal -.
Your regex works fine for me but if I remove the escaping of - it matches =. I'm sure you are doing that.
加载中,请稍侯......
精彩评论