正则表达式仅匹配字母字符

Ste*_*ris 138 regex

我想知道如果我能得到一个正则表达式,它将匹配一个仅具有alpahabetic字符的字符串,并且仅此一项

anu*_*ava 163

您可以使用以下两种变体中的任何一种:

/^[A-Z]+$/i
/^[A-Za-z]+$/
Run Code Online (Sandbox Code Playgroud)

匹配ASCII字母表的输入字符串.

  • [A-Za-z] 将匹配所有字母(小写和大写).
  • ^$确保除了这些字母表之外什么也不会匹配.

码:

preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Run Code Online (Sandbox Code Playgroud)

输出:

array(0) {
}
Run Code Online (Sandbox Code Playgroud)

测试用例是他想匹配OP的评论只有当不存在输入1个或多个字母.正如您在测试用例中看到的那样匹配失败,因为^输入字符串中存在abcAbc^Xyz.

注意:请注意,上述答案仅与ASCII字母匹配且与Unicode字符不匹配.如果你想匹配unicode字母,那么使用:

/^\p{L}+$/u
Run Code Online (Sandbox Code Playgroud)

  • 在某些方言中,[Az]将匹配在'Z'和'a'之间出现的ASCII标点值,特别是'[','\',']','^',' - '和'`',如以及'A'到'Z'和'a'到'z'. (22认同)
  • @Lee:不是一些.他们都是.这个正则表达式在当前状态下是错误的. (7认同)
  • `\ w是A-Za-z`的简写 - 不是真的,'\ w`是`[a-zA-Z0-9_]的缩写 (7认同)
  • 不,“[Az]”是错误的,因为它匹配许多其他字符,而不仅仅是“[A-Za-z]” (5认同)
  • 而不是使用“[A-Za-z]``”,使用“[Az]``” (3认同)
  • 我知道 `\p{L}` [在 Java 中工作](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) 但我不知道[它是通用的](https://regex101.com/r/SlQvEs/1),直到我遇到这个答案。感谢您分享这些知识。 (2认同)

Tim*_*ker 49

如果您需要包含非ASCII字母字符,并且您的正则表达式支持Unicode,那么

\A\pL+\z
Run Code Online (Sandbox Code Playgroud)

将是正确的正则表达式.

某些正则表达式引擎不支持此Unicode语法,但允许使用\w字母数字缩写来匹配非ASCII字符.在这种情况下,您可以通过减去数字和下划线来获得所有字母顺序,\w如下所示:

\A[^\W\d_]+\z
Run Code Online (Sandbox Code Playgroud)

\A在字符串的开头匹配,在字符串\z的末尾匹配(^并且$在某些语言(如Ruby)中的行的开头/结尾处匹配,或者如果设置了某些正则表达式选项).

  • +1不考虑英文字母作为唯一的字母表 (31认同)
  • +1,与上述相同.英语不是唯一的字母表,许多人使用非ascii字符来正确表达它们的名字. (4认同)

ste*_*rie 21

这将匹配一个或多个字母字符:

/^[a-z]+$/
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法使其不区分大小写:

/^[a-z]+$/i
Run Code Online (Sandbox Code Playgroud)

要么:

/^[a-zA-Z]+$/
Run Code Online (Sandbox Code Playgroud)

  • 这将仅匹配拉丁字符。 (2认同)

jsh*_*kol 13

在Ruby和支持表达式中支持POSIX字符类的其他语言中,您可以简单地执行以下操作:

/\A[[:alpha:]]+\z/i
Run Code Online (Sandbox Code Playgroud)

这将匹配所有Unicode字母语言中的alpha-chars.十分简单.

更多信息:http : //en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html


Fra*_*mas 6

[a-zA-Z] 应该做的就好了.

您可以参考备忘单.

  • 是的,但我也会,如果我的字符串包含一个非单词字符,它仍然会匹配 (4认同)