为什么'B'与[a-z]匹配?

时间:2013-01-25 14:39:32

标签: javascript regex

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

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

显然'B'超出了[a-z]?

4 个答案:

答案 0 :(得分:10)

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

来自RegEx的MDN文档:

  

参数

     

图案

     

正则表达式的文本。

     

标志

     

如果指定,flags可以包含以下值的任意组合:

     

...

     
      
  • i

         

    忽略案例

  •   

答案 1 :(得分:3)

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

正则表达式本质上也是SensAtiVe,因此[a-z][A-Z]不同(除非您使用i(不区分大小写)标记,就像您已经证明的那样)。

e.g。

/[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

答案 2 :(得分:1)

<强>摘要

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

  • ^是一个锚,表示该集必须以输入的第一个字符开头。

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

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

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

答案 3 :(得分:0)

它表示az之间的任何字符。

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

整个正则表达式检查字符串是否包含至少一个字符,并且所有字符都在a-z或A-Z中。

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