正则表达式 - 仅当字符串包含任何字母字符时才匹配字符串

Regex - Match a string only when it contains any alphabetic characters

提问人:shabby 提问时间:3/2/2009 最后编辑:shabby 更新时间:1/13/2014 访问量:2987

问:

示例字符串

785*()&!~`a

##$%$~2343

455frt&*&*

我想捕获第一个和第三个,但不是第二个,因为它不包含任何字母字符,请帮忙

C# .NET 正则表达式 匹配 alpha

评论


答:

3赞 Guido Domenici 3/2/2009 #1

这是一种可能的方法:

.*[a-zA-Z]+

评论

0赞 Lieven Keersmaekers 3/2/2009
@Guido,它不能完全捕获 455frt&*&*。
0赞 Lieven Keersmaekers 3/2/2009
@Shabby,如果将 .* 添加到正则表达式中,则会捕获第一个和第三个实例。然后正则表达式将变为“.*[a-zA-Z]+.*”
5赞 Daren Thomas 3/2/2009 #2

事实上,我认为可能足以匹配你的琴弦。[a-zA-Z]

要捕获整个内容,请尝试:^.*[a-zA-Z].*$

评论

0赞 VonC 3/2/2009
我同意(不需要我的展望)。当心 “dotall” 模式:您不希望 '.' 包含 \r\n
0赞 overslacked 3/2/2009 #3

这是我最喜欢的正则表达式测试网站:Javascript 正则表达式测试器和备忘单

2赞 Renaud Bompuis 3/2/2009 #4

你也许应该澄清一下你所说的“catpuring”是什么意思:你想要整个字符串的ascii位吗?

此外,您没有说它是否应该只匹配普通的罗马字母(A 到 Z),或者它是否也应该匹配 Unicode 字符以匹配其他语言中的字符串。

如果你只需要测试你的字符串,在 C# 中,你可以做:

bool matching = Regex.IsMatch(myString, "[a-zA-Z]");

您不需要任何其他东西,因为字符串中任何位置只有一个字母会匹配(根据您的定义)。myString

0赞 Rafał Rutkowski 1/13/2014 #5

如果要匹配所有字母(包括非 ASCII 字母),请使用 代替 。请参阅 Unicode 类别p{L}[a-zA-Z]