如何编写仅匹配字母的正则表达式?正则表达式仅匹配字母
回答
使用字符集:[a-zA-Z]
与小写和大写的A-Z中的一个字母匹配。 [a-zA-Z]+
匹配一个或多个字母,并且^[a-zA-Z]+$
仅匹配只包含一个或多个字母的字符串(^
和$
分别标记字符串的开头和结尾)。
如果要匹配除A-Z之外的其他字母,可以将它们添加到字符集:[a-zA-ZäöüßÄÖÜ]
。或者您使用预定义的字符类,如Unicode character property类\p{L}
,它描述了字母的Unicode字符。
这是一个非常以ASCII为中心的解决方案。这几乎会打破任何非英文文本。 – 2010-09-01 12:13:14
@Joachim Sauer:它宁可打破使用非拉丁字符的语言。 – Gumbo 2010-09-01 12:17:59
德语文本的90%已经打破了,甚至不提法文或西班牙文。尽管意大利人仍然可以做得很好。 – 2010-09-01 12:22:32
\p{L}
匹配任何是一个Unicode字母,如果你有兴趣字母超越拉丁一个
并非所有正则表达式。例如,vim正则表达式将'\ p'视为“可打印字符”。 – 2010-09-01 12:12:28
那么在支持unicode的,然后正则表达式 – RobV 2010-09-01 12:13:19
[此页]任何正则表达式引擎(http://www.regular-expressions.info/refflavors.html)认为只有Java中,.NET,PERL,jgsoft,XML和XPath的正则表达式的支持\ p {L}。但重大遗漏:python和ruby(尽管python有正则表达式模块)。 – 2010-09-01 12:16:33
根据你的 “个性” 的含义:
[A-Za-z]
- 所有字母(大写和小写)
[^0-9]
- 所有非数字字符
我的意思是说。它似乎没有工作。 preg_match('/ [a-zA-Z] + /',$ name); – Nike 2010-09-01 12:19:01
[A-Za-z]只是您可以使用的字符声明。您仍然需要声明如何使用此声明:[A-Za-z] {1,2}(匹配1或2个字母)或[A-Za-z] {1,*}(以匹配1个或多个字母) – Molske 2010-09-01 13:06:41
井A,A,A,O,A ......是信了,所以是অ,আ,ই,ঈ,Є,Ж,З,ح,خ,دא,ב,ג,ש ,ת,... https://en.wikipedia.org/wiki/Letter_%28alphabet%29 – 2016-09-20 09:50:37
对于PHP,下面如果你的意思是何字符编码的任何信件将正常工作
'/^[a-zA-Z]+$/'
,然后一个很好的办法可能是删除非字母状空间\s
,数字\d
,以及其他特殊字符,如:
[[email protected]#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
或使用以上否定之否定直接描述的信:
\S \D and [^ ..special chars..]
优点:
- 适用于所有的正则表达式的口味。
- 易写,有时节省很多时间。
缺点:
- 长,有时并不完美,但字符编码也可被打破。
只需使用\w
或[:alpha:]
。这是一个转义序列,它只匹配可能出现在文字中的符号。
在所有情况下,'\ w'可能不是一个好的解决方案。至少在PCRE中,'\ w'也可以匹配其他字符。引用[PHP手册](http://uk3.php.net/manual/en/regexp.reference.escape.php):“*”单词“字符是任何字母或数字或下划线字符,也就是说,任何可以成为Perl“单词”一部分的字符字母和数字的定义由PCRE的字符表来控制,如果发生特定于语言环境的匹配,字母和数字的定义可能会有所不同,例如,在“fr”(法语)区域设置,一些大于128的字符代码用于重音字母,并且这些符号由\ w。*“匹配。 – 2014-06-08 19:56:26
词包括字母 – 2015-05-15 03:05:55
其他字符'\ w'意味着匹配的字母和数字 – 2016-08-26 16:10:33
图案=/[A-ZA-Z]/
看跌期权 “[1 - ZA-Z]:#{pattern.match(” 矿开花 “)}” OK
看跌期权“[一个-ZA-Z]:#{pattern.match( “456”)} “
看跌期权 ”[1 - ZA-Z]:#{pattern.match(“ ”)}“
看跌期权” [a-zA-Z]:#{pattern.match(“#$%^ & *”)}“
puts”[a-zA-Z]:#{pattern.match(“#$%^ & * A“)}”OK
您可以试试以下正则表达式:[^\W\d_]
或[a-zA-Z]
。
这不是什么'[^ \ W | \ d]'意味着 – OGHaza 2014-07-25 13:34:24
'[^ \ W | \ d]'表示不'\ W'而不是'|'而不是'\ d'。它具有相同的净效果,因为'|是'\ W'的一部分,但是'|'不像你认为的那样工作。即便如此,这意味着它接受'_'字符。您可能正在寻找'[^ \ W \ d_]' – OGHaza 2014-07-25 14:47:32
我同意你的意见,它接受'_'。但是, “NOT”'|'大于等于 “AND”,所以'[^ \ W | \ d]'表示:NOT'\ W' **和**不是'\ D' – Motlab 2014-07-25 15:01:18
最近的可用选项是
[\u\l]+
其中的大写和小写字母的顺序一致。但是,并非所有的编辑器/语言的支持,所以它可能是更安全的使用
[a-zA-Z]+
其他用户建议
虽然不匹配任何特殊字符。 – Nyerguds 2016-05-25 06:25:14
你会使用
/[a-z]/gi
[] - 检查给定输入之间的任何字符
az ---涵盖整个字母表
g --- --globally在整个字符串
我-----越来越大写和小写
Pattern pattern = Pattern.compile("^[a-zA-Z]+$");
if (pattern.matcher("a").find()) {
...do something ......
}
这几个人写的正则表达式 “/^[A-ZA-Z] $ /我”是不正确的,因为在最后,他们都提到/我这是不区分大小写并首次将返回匹配之后。代替/我只是使用/克这是全球性的,你也没有任何需要把^$为开始和结束。 [_ A-Z] +匹配单个字符存在于低于
/[a-zA-Z]+/g
- :+之间一个和无限次,多次地,用之于根据需要
- AZ的范围内的单个字符a和z(区分大小写)
- AZ之间的单个字符在A和Z(区分大小写)
- 克改性剂之间的范围内:全球。所有的比赛(不上的第一场比赛返回)
String string= "abcdef";
if(string.match("^[a-zA-Z]+$$")){
System.out.println("string only contains letters");
}
- 1. 正则表达式匹配一个字母字母和数字
- 2. 正则表达式 - 仅匹配括号
- 3. 正则表达式仅匹配空格
- 4. 正则表达式的Java非字母数字字符匹配
- 5. 正则表达式匹配字母数字字符和符号(&)
- 6. 正则表达式匹配未知字母数字字符数
- 7. 与非字母数字字符匹配的正则表达式
- 8. 正则表达式正则表达式匹配字符串
- 9. 奇怪的正则表达式(正则表达式)匹配!不匹配数字
- 10. 正则表达式:仅匹配带前面小写字母的字符
- 11. 正则表达式匹配字符串仅包含特定字母
- 12. 字母和数字的组合匹配正则表达式
- 13. 正则表达式匹配字母,数字和某些符号
- 14. 正则表达式MySQL - 匹配前两个字母,x数字
- 15. 正则表达式匹配的是数字,而不是字母
- 16. 正则表达式 - 不匹配的字母字符(C#)
- 17. Java正则表达式字母数字匹配
- 18. 正则表达式非匹配的数字和字母
- 19. 匹配字母字符正则表达式变量只
- 20. 可变的正则表达式匹配的字母数字
- 21. 正则表达式匹配前面没有字母的数字
- 22. 正则表达式主要匹配字母数字路径
- 23. NSPredicate与正则表达式匹配国际字母字符集
- 24. 正则表达式匹配连续n(字母数字)
- 25. 字符串首字母匹配正则表达式
- 26. Perl正则表达式匹配字母数字
- 27. 在正则表达式中匹配特殊字符和字母
- 28. C#正则表达式匹配字母,数字和下划线
- 29. 匹配字母后跟数字的正则表达式
- 30. 如何使用正则表达式来匹配字母字符?
你对字符的定义是什么? ASCII?汉子? ISO-XXXX-X? UTF8? – 2010-09-01 12:10:11
您对“正则表达式”的定义是什么? Perl的? Emacs的? grep的? – 2010-09-01 12:17:24