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