Javascript 为什么是';B';是否与[a-z]匹配?

Javascript 为什么是';B';是否与[a-z]匹配?,javascript,regex,Javascript,Regex,一个非常简单和天真的问题: 为什么这是真的 new RegExp('^[a-z]+$', 'i').test('B') 显然,“B”在[a-z]之外?它表示a和z之间的任何字符 当您指定i标志(不区分大小写)时,它还包含B 整个regexp检查字符串是否至少包含一个字符,以及所有字符是否在a-z或a-z中 您可以检查newregexp(“^[a-z]+$”,“i”)。test('B')返回true摘要 [a-z]表示包含字符a-z的字符集 ^是一个锚点,这意味着集合必须以输入的第一个字符开始

一个非常简单和天真的问题: 为什么这是真的

new RegExp('^[a-z]+$', 'i').test('B')

显然,“B”在[a-z]之外?

它表示
a
z
之间的任何字符

当您指定
i
标志(不区分大小写)时,它还包含
B

整个regexp检查字符串是否至少包含一个字符,以及所有字符是否在a-z或a-z中


您可以检查
newregexp(“^[a-z]+$”,“i”)。test('B')
返回
true

摘要

  • [a-z]表示包含字符a-z的字符集

  • ^是一个锚点,这意味着集合必须以输入的第一个字符开始

  • +表示必须匹配字符集中的一个或多个字符

  • $是一个结束锚,意味着集合必须结束输入的最后一个字符

  • 我的意思是忽略输入字母的大小写


是,但是您有
i
参数,它告诉正则表达式忽略大小写

从MDN文档中获取:

参数 图案 正则表达式的文本

旗帜 如果指定,标志可以具有以下值的任意组合:

  • i

    忽略案例


它定义了一个类,也就是说
[a-z]
是“从
a
z
的任何字符”的符号

Regex本质上也是区分大小写的,因此
[a-z]
不同于
[a-z]
(除非您使用
i
(不区分大小写)标志,如您所示)

e、 g


他切换了
i
修饰符(忽略大小写),所以这并不重要。
/[a-z]/              -- Any single character, a through z
/[A-Z]/              -- Any single uppercase letter, A through Z
/[a-zA-Z]/           -- Any single upper or lowercase letter, a through z
/[a-z]/i or /[A-Z]/i -- (note the i) Any upper or lowercase letter, a through z