如何编写仅与字母匹配的正则表达式?
根据你的“角色”的含义:
[A-Za-z] - 所有字母(大写和小写)
[^0-9] - 所有非数字字符
/[a-zA-Z]+/
超级简单的例子 . 正则表达式非常容易在线查找 .
http://www.regular-expressions.info/reference.html
最接近的选项是
[\u\l]+
它匹配大写和小写字母的序列 . 但是,并非所有编辑器/语言都支持它,因此使用它可能更安全
[a-zA-Z]+
正如其他用户所说
如果你的意思是任何字符编码中的任何字母,那么一个好的方法可能是删除非字母,如空格 \s ,数字 \d ,以及其他特殊字符,如:
\s
\d
[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
或者使用上述否定的否定来直接描述任何字母:
\S \D and [^ ..special chars..]
优点:
适用于所有正则表达式 .
易于编写,有时可节省大量时间 .
缺点:
\p{L} 匹配任何Unicode字母,如果您对拉丁字母之外的字母表感兴趣
\p{L}
使用字符集: [a-zA-Z] 以小写和大写形式匹配A-Z中的一个字母 . [a-zA-Z]+ 匹配一个或多个字母, ^[a-zA-Z]+$ 仅匹配仅包含一个或多个字母的字符串( ^ 和 $ 分别标记字符串的开头和结尾) .
[a-zA-Z]
^[a-zA-Z]+$
^
$
如果要匹配除A-Z之外的其他字母,可以将它们添加到字符集: [a-zA-ZäöüßÄÖÜ] . 或者您使用预定义的字符类,如Unicode character property类 \p{L} ,它描述了字母的Unicode字符 .
[a-zA-ZäöüßÄÖÜ]
Java的:
String s= "abcdef"; if(s.matches("[a-zA-Z]+")){ System.out.println("string only contains letters"); }
pattern = / [a-zA-Z] /
把“[a-zA-Z]:#{pattern.match(”我的开花“)}”好吧
把“[a-zA-Z]:#{pattern.match(”456“)}”
把“[a-zA-Z]:#{pattern.match(”“)}”
把“[a-zA-Z]:#{pattern.match(”#$%^&*“)}”
把“[a-zA-Z]:#{pattern.match(”#$%^&* A“)}”确定
对于PHP,以下将正常工作
'/^[a-zA-Z]+$/'
您可以尝试使用此正则表达式: [^\W\d_] 或 [a-zA-Z] .
[^\W\d_]
正则表达式很少有人写成"/^[a-zA-Z]$/i"是不正确的,因为最后他们提到 /i 这是不区分大小写的,并且在第一次匹配后它将返回 . 而不是 /i 只使用 /g 这是全局的,你也没有必要把 ^ $ 用于开始和结束 .
/[a-zA-Z]+/g
[a-z_]+ 匹配下面列表中的单个字符
量词: + 在一次和无限次之间,尽可能多次,根据需要回馈
a-z a和z之间范围内的单个字符(区分大小写)
A-Z A和Z之间范围内的单个字符(区分大小写)
g 修饰符:全局 . 所有比赛(首场比赛不返回)
你会用的
/[a-z]/gi
[] - 检查给定输入之间的任何字符
a-z ---涵盖整个字母表
g -----遍及整个字符串的全局
我-----得到大写和小写
Pattern pattern = Pattern.compile("^[a-zA-Z]+$"); if (pattern.matcher("a").find()) { ...do something ...... }
只需使用 \w 或 [:alpha:] . 它是一个转义序列,只匹配可能出现在单词中的符号 .
\w
[:alpha:]
使用字符组
\D
匹配除数字0-9之外的任何字符
^\D+$
见例子here
15 回答
根据你的“角色”的含义:
超级简单的例子 . 正则表达式非常容易在线查找 .
http://www.regular-expressions.info/reference.html
最接近的选项是
它匹配大写和小写字母的序列 . 但是,并非所有编辑器/语言都支持它,因此使用它可能更安全
正如其他用户所说
如果你的意思是任何字符编码中的任何字母,那么一个好的方法可能是删除非字母,如空格
\s
,数字\d
,以及其他特殊字符,如:或者使用上述否定的否定来直接描述任何字母:
优点:
适用于所有正则表达式 .
易于编写,有时可节省大量时间 .
缺点:
\p{L}
匹配任何Unicode字母,如果您对拉丁字母之外的字母表感兴趣使用字符集:
[a-zA-Z]
以小写和大写形式匹配A-Z中的一个字母 .[a-zA-Z]+
匹配一个或多个字母,^[a-zA-Z]+$
仅匹配仅包含一个或多个字母的字符串(^
和$
分别标记字符串的开头和结尾) .如果要匹配除A-Z之外的其他字母,可以将它们添加到字符集:
[a-zA-ZäöüßÄÖÜ]
. 或者您使用预定义的字符类,如Unicode character property类\p{L}
,它描述了字母的Unicode字符 .Java的:
pattern = / [a-zA-Z] /
把“[a-zA-Z]:#{pattern.match(”我的开花“)}”好吧
把“[a-zA-Z]:#{pattern.match(”456“)}”
把“[a-zA-Z]:#{pattern.match(”“)}”
把“[a-zA-Z]:#{pattern.match(”#$%^&*“)}”
把“[a-zA-Z]:#{pattern.match(”#$%^&* A“)}”确定
对于PHP,以下将正常工作
您可以尝试使用此正则表达式:
[^\W\d_]
或[a-zA-Z]
.正则表达式很少有人写成"/^[a-zA-Z]$/i"是不正确的,因为最后他们提到 /i 这是不区分大小写的,并且在第一次匹配后它将返回 . 而不是 /i 只使用 /g 这是全局的,你也没有必要把 ^ $ 用于开始和结束 .
[a-z_]+ 匹配下面列表中的单个字符
量词: + 在一次和无限次之间,尽可能多次,根据需要回馈
a-z a和z之间范围内的单个字符(区分大小写)
A-Z A和Z之间范围内的单个字符(区分大小写)
g 修饰符:全局 . 所有比赛(首场比赛不返回)
你会用的
[] - 检查给定输入之间的任何字符
a-z ---涵盖整个字母表
g -----遍及整个字符串的全局
我-----得到大写和小写
只需使用
\w
或[:alpha:]
. 它是一个转义序列,只匹配可能出现在单词中的符号 .使用字符组
匹配除数字0-9之外的任何字符
见例子here