Gum*_*mbo 361
使用字符集:[a-zA-Z]
匹配A-Z中的小写和大写字母.[a-zA-Z]+
匹配一个或多个字母和^[a-zA-Z]+$
仅仅包括一个或多个字母(字符串匹配^
和$
标记开始和分别的字符串的末尾).
如果你想匹配除A-Z之外的其他字母,你可以将它们添加到字符集:[a-zA-ZäöüßÄÖÜ]
.或者您使用预定义的字符类,如Unicode字符属性类\p{L}
,它描述字母的Unicode字符.
Rob*_*obV 178
\p{L}
如果您对拉丁语以外的字母表感兴趣,则匹配任何Unicode字母
Kri*_*ols 43
根据你的"角色"的含义:
[A-Za-z]
- 所有字母(大写和小写)
[^0-9]
- 所有非数字字符
blu*_*ote 29
最接近的选项是
[\u\l]+
Run Code Online (Sandbox Code Playgroud)
它匹配大写和小写字母的序列.但是,并非所有编辑器/语言都支持它,因此使用它可能更安全
[a-zA-Z]+
Run Code Online (Sandbox Code Playgroud)
正如其他用户所说
小智 15
你会用的
/[a-z]/gi
Run Code Online (Sandbox Code Playgroud)
[] - 检查给定输入之间的任何字符
az ---涵盖整个字母表
g -----遍布整个字符串的全局
我-----得到大写和小写
小智 13
很少有人写成"/ ^ [a-zA-Z] $/i"的正则表达式是不正确的,因为最后他们提到/ i是不区分大小写的,并且在第一次匹配后它将返回.而不是/我只使用/ g这是全局的,你也没有任何需要把^ $用于开始和结束.
/[a-zA-Z]+/g
Run Code Online (Sandbox Code Playgroud)
Sco*_*iff 10
/[a-zA-Z]+/
Run Code Online (Sandbox Code Playgroud)
超级简单的例子.正则表达式非常容易在线查找.
http://www.regular-expressions.info/reference.html
小智 9
Java的:
String s= "abcdef";
if(s.matches("[a-zA-Z]+")){
System.out.println("string only contains letters");
}
Run Code Online (Sandbox Code Playgroud)
所以,我读了很多答案,其中大多数都没有考虑例外情况,比如带有重音符号或分音符的字母(\xc3\xa1、\xc3\xa0、\xc3\xa4 等) .)。
\n我在打字稿中创建了一个函数,它应该可以很好地推广到任何可以使用 RegExp 的语言。这是我在 TypeScript 中的用例的个人实现。我基本上所做的就是添加字母范围和我想要添加的每种符号。在应用 RegExp 之前,我还将字符转换为大写,这节省了我一些工作。
\nfunction isLetter(char: string): boolean {\n return char.toUpperCase().match(\'[A-Z\xc3\x80-\xc3\x9a\xc3\x84-\xc3\x9c]+\') !== null;\n}\n
Run Code Online (Sandbox Code Playgroud)\n如果您想添加具有另一种重音的另一个字母范围,只需将其添加到正则表达式中即可。特殊符号也是如此。
\n我使用 TDD 实现了此功能,并且我可以确认此功能至少适用于以下情况:
\n character | isLetter\n ${\'A\'} | ${true}\n ${\'e\'} | ${true}\n ${\'\xc3\x81\'} | ${true}\n ${\'\xc3\xbc\'} | ${true}\n ${\'\xc3\xb9\'} | ${true}\n ${\'\xc3\xbb\'} | ${true}\n ${\'(\'} | ${false}\n ${\'^\'} | ${false}\n ${"\'"} | ${false}\n ${\'`\'} | ${false}\n ${\' \'} | ${false}\n
Run Code Online (Sandbox Code Playgroud)\n
如果您指的是任何字符编码中的任何字母,那么一个好的方法可能是删除非字母,例如空格\s
、数字\d
和其他特殊字符,例如:
[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
Run Code Online (Sandbox Code Playgroud)
或者使用上述否定的否定来直接描述任何字母:
\S \D and [^ ..special chars..]
Run Code Online (Sandbox Code Playgroud)
优点:
缺点:
只需使用\w
或[:alpha:]
.它是一个转义序列,只匹配可能出现在单词中的符号.
小智 6
使用字符组
\D
Run Code Online (Sandbox Code Playgroud)
匹配除数字0-9之外的任何字符
^\D+$
Run Code Online (Sandbox Code Playgroud)
见这里的例子
小智 6
在 python 中,我发现以下方法可以工作:
[^\W\d_]
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为我们正在创建一个新的字符类 (the []
),它^
从类中排除 ( ) 任何字符\W
(不在 中的所有字符[a-zA-Z0-9_]
),还排除任何数字 ( \d
) 并排除下划线 ( _
)。
也就是说,我们采用了字符类[a-zA-Z0-9_]
并删除了0-9
和_
位。你可能会问,那不是更容易写吗[a-zA-Z]
,而不是[^\W\d_]
?如果只处理 ASCII 文本,你会是正确的,但在处理 unicode 文本时:
\W
匹配任何不是单词字符的字符。这与\w相反。> 如果使用 ASCII 标志,则这相当于 [^a-zA-Z0-9_]。
^ 来自python re 模块文档
也就是说,我们将所有被认为是 unicode 中的单词字符,删除所有被认为是 unicode 中的数字字符,并删除下划线。
例如,下面的代码片段
import re
regex = "[^\W\d_]"
test_string = "A;,./>>?()*)&^*&^%&^#Bsfa1 203974"
re.findall(regex, test_string)
Run Code Online (Sandbox Code Playgroud)
退货
['A', 'B', 's', 'f', 'a']
Run Code Online (Sandbox Code Playgroud)
您可以尝试这个正则表达式:[^\W\d_]
或[a-zA-Z]
。
最近,我在表单中使用了这种模式来检查人名,其中包含字母、空格和特殊字符(例如重音符号)。
\n\npattern="[A-z\xc3\x80-\xc3\xba\\s]+"\n
Run Code Online (Sandbox Code Playgroud)\n