在使用正则表达式时,我发现了一个问题。任何人都可以为下面的情景提供正确的理由
情景-1
var regExp=/^[a-zA-Z0-9!-@#$^_:,. ]$/;
regExp.test('<')// True
情景-2
var regExp=/^[a-zA-Z0-9-!@#$^_:,. ]$/;
regExp.test('<')// false
正则表达式中的感叹号位置发生了变化。
答案 0 :(得分:2)
First Regex
var regExp=/^[a-zA-Z0-9!-@#$^_:,. ]$/;
!-@
匹配字符范围。根据{{3}}值,它包含<
原因
a-z
- 将a
与z
个字符匹配A-Z
- 将A
与Z
个字符匹配0-9
- 将0
与9
个字符匹配!-@
将!
与@
个字符匹配#$^_:,.
字符将匹配Second Regex
var regExp=/^[a-zA-Z0-9-!@#$^_:,. ]$/;
-
正常工作-
字符,此正则表达式不匹配<
原因
a-z
- 将a
与z
个字符匹配A-Z
- 将A
与Z
个字符匹配0-9
- 将0
与9
个字符匹配-!@#$^_:,.
个字符将匹配。希望你明白了