正则expression式和之间的区别

我正在使用正则expression式来编写一个文本框的inputvalidation器,我只需要字母字符。 我想知道[Az][a-zA-Z]是否相同,或者performance是否有差异。

我一直在阅读[a-zA-Z] ,没有提到[Az]

我正在使用Java的String.matches(regex)

[Az]将匹配从Az范围内的ASCII字符,而[a-zA-Z]将匹配AZ范围内以及az范围内的ASCII字符。 乍一看,这可能看起来是等价的 – 但是,如果您查看这个 ASCII字符表 ,您会看到Az包含其他几个字符。 具体来说,它们是[\]^_和“(你显然不想要)。

看看ASCII表 。 你会看到Za之间有一些字符,所以你会比你更喜欢的匹配。

az匹配“a”到“z”AZ匹配“A”到“Z”Az匹配所有这些以及“Z”和“a”之间的字符,它们是[] ^ / _`

请参阅http://www.asciitable.com/

方括号创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之间有很多标点符号,即:

 [\]^ _`