正则表达式[Az]和[a-zA-Z]之间的区别

Eri*_*ric 50 java regex

我正在使用正则表达式为一个文本框编写输入验证器,我只想要字母字符.我在想,如果[A-z][a-zA-Z]是相等的或是否存在差异明智的性能.

我继续阅读[a-zA-Z]我的搜索,没有提到[A-z].

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

Don*_*nut 88

[A-z]将在范围匹配的ASCII字符从Az,而[a-zA-Z]将从匹配在范围的ASCII字符A,以Z 在从范围az.乍一看,这似乎是等价的 - 但是,如果你看一下这个 ASCII字符,你会看到它A-z包括其他几个字符.具体而言,它们是[,\,],^,_,和`(你显然不希望).

  • 我想我真的不确定Za之间是否有角色. (8认同)

Pet*_*rey 12

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

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


dar*_*ioo 9

看看ASCII表.你会发现Z和之间有一些字符a,所以你会比你想要的更多.


Mar*_*aux 9

当您查看ASCII表时,您将看到以下内容:

A = 65
Z = 90
a = 97
z = 122
Run Code Online (Sandbox Code Playgroud)

因此,[A-z]将匹配从65到122的每个字符.这包括这些字符(91 -> 96):

[\]^_`
Run Code Online (Sandbox Code Playgroud)

这意味着[A-Za-z]只匹配字母表,没有注意到的字符


a'r*_*a'r 7

方括号创建一个字符类,连字符是在两个提供的字符之间添加每个字符的简写.即[A-F]可以写[ABCDEF].

字符类[A-z]将匹配这些字符之间的每个字符,ASCII中包含一些其他字符,如'[','\'和']'.

指定这两种情况的另一种方法是使用/i修饰符将正则表达式设置为不区分大小写.