正则expression式只匹配字母
我怎样才能写一个只匹配字母的正则expression式?
使用字符集: [a-zA-Z]
以小写和大写匹配来自A-Z的一个字母。 [a-zA-Z]+
匹配一个或多个字母,而^[a-zA-Z]+$
只匹配只包含一个或多个字母的string( ^
和$
分别表示string的开始和结束)。
如果您想要匹配除A-Z之外的其他字母,则可以将它们添加到字符集: [a-zA-ZäöüßÄÖÜ]
。 或者,您使用预定义的字符类,如Unicode字符属性类\p{L}
,它描述了字母的Unicode字符。
如果您对超出拉丁字母的字母感兴趣, \p{L}
匹配任何一个Unicode字母
根据你的“性格”的含义:
[A-Za-z]
– 所有字母(大写和小写)
[^0-9]
– 所有非数字字符
最接近的选项是
[\u\l]+
它匹配大写和小写字母的序列。 但是,所有的编辑/语言都不支持,所以使用起来可能更安全
[a-zA-Z]+
正如其他用户所build议
对于PHP,以下将正常工作
'/^[a-zA-Z]+$/'
很less有人写成“/ ^ [a-zA-Z] $ / i”的正则expression式是不正确的,因为最后他们提到/ i是不区分大小写的,在第一次匹配后它会返回。 而不是/我只是使用/ g这是全球性的,你也没有任何需要把^ $作为开始和结束。
/[a-zA-Z]+/g
- [a-z _] +匹配下面列表中的单个字符
- 量词: +在一次和无限次之间,尽可能多地按需要回馈
- az a和z之间范围内的单个字符(区分大小写)
- AZ是A和Z之间范围内的单个字符(区分大小写)
- g修饰符:全局。 所有比赛(不要在第一场比赛中返回)
使用字符组
\D
匹配除数字0-9之外的任何字符
^\D+$
看这里的例子
只需使用\w
或[:alpha:]
。 这是一个转义序列,只匹配可能出现在文字中的符号。
如果您的意思是任何字符编码中的任何字母,那么一个好方法可能是删除空格\s
,数字\d
以及其他特殊字符之类的非字母:
[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
或者用否定的否定来直接描述任何字母:
\S \D and [^ ..special chars..]
优点:
- 适用于所有正则expression式。
- 容易写,有时节省很多时间。
缺点:
- 长,有时不完美,但字符编码也可以被打破。
你会用
/[az]/gi
[] – 检查给定input之间的任何字符
az —涵盖了整个字母表
g —–整个string全局
我—–大写和小写
pattern = / [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“)}”OK
你可以试试这个正则expression式: [^\W\d_]
或[a-zA-Z]
。
String string= "abcdef"; if(string.match("^[a-zA-Z]+$$")){ System.out.println("string only contains letters"); }
Pattern pattern = Pattern.compile("^[a-zA-Z]+$"); if (pattern.matcher("a").find()) { ...do something ...... }