一个非常简单和天真的问题:为什么这是真的?
new RegExp('^[a-z]+$', 'i').test('B')
显然“B”不在 [az] 范围内?
它定义了一个类,也就是说,它[a-z]
象征着“任何字符,从a
到z
”。
正则表达式本质上也是区分大小写的,因此会[a-z]
有所不同[A-Z]
(除非您使用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
概括
[az] 表示包含字符 az 的字符集。
^ 是一个锚,这意味着该集合必须以输入的第一个字符开头。
+ 表示您必须匹配字符集中的一个或多个。
$ 是一个结束锚,意味着该集合必须结束输入的最后一个字符。
i 表示忽略输入字母的大小写。
a
它表示和之间的任何字符z
。
当您指定i
标志(不区分大小写)时,它还包含B
.
整个正则表达式检查字符串是否包含至少一个字符并且所有字符都在 az 或 AZ 中。
您可以检查new RegExp('^[a-z]+$', 'i').test('B')
返回true
。