正则expression式和之间的区别
我正在使用正则expression式来编写一个文本框的inputvalidation器,我只需要字母字符。 我想知道[Az]
和[a-zA-Z]
是否相同,或者performance是否有差异。
我一直在阅读[a-zA-Z]
,没有提到[Az]
。
我正在使用Java的String.matches(regex)
。
[Az]
将匹配从A
到z
范围内的ASCII字符,而[a-zA-Z]
将匹配A
到Z
范围内以及a
到z
范围内的ASCII字符。 乍一看,这可能看起来是等价的 – 但是,如果您查看这个 ASCII字符表 ,您会看到Az
包含其他几个字符。 具体来说,它们是[
, \
, ]
, ^
, _
和“(你显然不想要)。
看看ASCII表 。 你会看到Z
和a
之间有一些字符,所以你会比你更喜欢的匹配。
az匹配“a”到“z”AZ匹配“A”到“Z”Az匹配所有这些以及“Z”和“a”之间的字符,它们是[] ^ / _`
方括号创build一个字符类,连字符是在两个提供的字符之间添加每个字符的简写。 即[AF]
可以写入[ABCDEF]
。
字符类[Az]
将匹配这些字符之间的每个字符,在ASCII中包括一些其他字符,如'[','\'和']'。
指定两种情况的替代方法是使用/i
修饰符将正则expression式设置为不区分大小写。
当你看看ASCII表格时,你会看到以下内容:
A = 65 Z = 90 a = 97 z = 122
所以, [Az]
将匹配从65到122的所有字符。这也包括这些字符( 91 -> 97
)
[\]^_`
这意味着[A-Za-z]
只会匹配字母表,没有注意到的字符
看一下ASCII图表 (Java字符所基于的):Z和a之间有很多标点符号,即:
[\]^ _`