为什么这个正则表达式在javascript中返回true?

时间:2017-11-09 16:38:53

标签: javascript regex

var result = (/^[A-z0-9]+$/).test('[fugazi]') 
console.log( result )  // returns: true

当A-z(字母字符)和0-9(数字)中的字符类从开头(例如,^)到结尾(例如$)时,这不应该限制测试只返回true吗?为什么javascript允许括号[]?正则表达式中的括号表示字符类,而不是该字符的匹配,这似乎是一个错误,但它在chrome,firefox和safari中的行为相同。

1 个答案:

答案 0 :(得分:3)

它会返回true,因为您的角色类中的A-z范围不仅仅与A-Za-z匹配,而还包含更多字符ASCII范围介于Az

之间

A-z将匹配以下字符:

  • 范围A-Z(ASCII 65 - 90)
  • 中的所有字符
  • 91 [
  • 92 \
  • 93 ]
  • 94 ^
  • 95 _
  • 96 `
  • 范围a-z中的所有字符(ASCII 97 - 122)