4

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

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

显然“B”不在 [az] 范围内?

4

4 回答 4

10

是的,但是你有i告诉正则表达式忽略大小写的参数。

来自RegEx的 MDN 文档:

参数

图案

正则表达式的文本。

旗帜

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

...

  • i

    忽略大小写

于 2013-01-25T14:40:37.303 回答
3

它定义了一个类,也就是说,它[a-z]象征着“任何字符,从az”。

正则表达式本质上也是区分大小写的,因此会[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
于 2013-01-25T14:40:42.310 回答
1

概括

  • [az] 表示包含字符 az 的字符集。

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

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

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

  • i 表示忽略输入字母的大小写。

于 2013-01-25T14:40:29.493 回答
0

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

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

整个正则表达式检查字符串是否包含至少一个字符并且所有字符都在 az 或 AZ 中。

您可以检查new RegExp('^[a-z]+$', 'i').test('B')返回true

于 2013-01-25T14:40:22.810 回答