如何编写仅与字母匹配的正则表达式?
regex
什么?Perl?埃马克斯?Grep?
/\p{L}+/u
Given that the question is in English, on an English site, it's fair to assume the question regards characters in English.
这是真的。众所周知,英语使用者永远不会本地化他们的应用程序!
如何编写仅与字母匹配的正则表达式?
regex
什么?Perl?埃马克斯?Grep?
/\p{L}+/u
Given that the question is in English, on an English site, it's fair to assume the question regards characters in English.
这是真的。众所周知,英语使用者永远不会本地化他们的应用程序!
Answers:
使用字符集:[a-zA-Z]
以小写和大写形式匹配A–Z中的一个字母。[a-zA-Z]+
匹配一个或多个字母,并且^[a-zA-Z]+$
仅匹配仅包含一个或多个字母的字符串(^
并分别$
标记字符串的开头和结尾)。
如果要匹配A–Z以外的其他字母,则可以将它们添加到字符集中:[a-zA-ZäöüßÄÖÜ]
。或者,您可以使用预定义的字符类,例如Unicode字符属性类\p{L}
,它描述了字母的Unicode字符。
\p{L}
如果您对拉丁字母以外的字母感兴趣,则匹配Unicode字母的任何东西
\p
视为“可打印字符”。
\p{L}\p{M}*+
涵盖由多个代码点组成的字母,例如,字母后面带有重音符号。按照regular-expressions.info/unicode.html
bad escape \p at position 0
根据您对“字符”的含义:
[A-Za-z]
-所有字母(大写和小写)
[^0-9]
-所有非数字字符
[A-Za-z]
字母是字母,则必须指定所使用的语言
很少有人写成“ / ^ [a-zA-Z] $ / i”的正则表达式是不正确的,因为最后他们提到了/ i,它不区分大小写,并且在首次匹配后会返回。取而代之的/我只是使用/ G是全球,你也没有任何必要把^ $开始和结束。
/[a-zA-Z]+/g
Java:
String s= "abcdef";
if(s.matches("[a-zA-Z]+")){
System.out.println("string only contains letters");
}
ŹŻŚĄ
对于PHP,以下方法可以正常工作
'/^[a-zA-Z]+$/'
您可以尝试使用以下正则表达式:[^\W\d_]
或[a-zA-Z]
。
[^\W|\d]
意思
[^\W|\d]
表示不\W
,不|
,不\d
。它具有相同的净效果,因为它|
是其中的一部分,\W
但|
无法按您认为的那样起作用。即使那样也意味着它接受_
字符。您可能正在寻找[^\W\d_]
_
。但是“ NOT” |
等于“ AND”,因此[^\W|\d]
意味着:NOT \W
AND NOT\d
[^ab]
表示不a
,不是b
。[^a|b]
表示不a
,不|
,不b
。再举一个例子[a|b|c|d]
,[abcd|||]
它和完全一样[abcd|]
-所有等于([a]|[b]|[c]|[d]|[|])
的|
都是文字字符,而不是OR运算符。OR运算符隐含在字符类中的每个字符之间,这实际上|
意味着您希望该类接受|
(竖线)字符。
最近,我在表单中使用了这种模式来检查人员姓名,其中包含字母,空格和带重音符号的特殊字符。
pattern="[A-zÀ-ú\s]+"
A-z
不仅可以匹配字母,还可以匹配À-ú
模式= / [a-zA-Z] /
放置“ [[a-zA-Z]:#{pattern.match(“ mine Blossom”)}“”确定
放置“ [a-zA-Z]:#{pattern.match(“ 456”)}“
放置“ [a-zA-Z]:#{pattern.match(“”)}“”
放置“ [a-zA-Z]:#{pattern.match(“#$%^&*”)}“
将“ [a-zA-Z]:#{pattern.match(“#$%^&* A”)}“确定
Pattern pattern = Pattern.compile("^[a-zA-Z]+$");
if (pattern.matcher("a").find()) {
...do something ......
}
characters
什么?ASCII?汉子?iso-XXXX-X?UTF8?