首页 > 解决方案 > 正则表达式接受除字母、数字以外的任何内容

问题描述

需要一个正则表达式的帮助,它可以接受除字母(Aa-Zz)、数字(0-9)和@之外的任何内容

例如差异输入类型

bony -> fail
gup12-> fail
@    -> fail
!#$  -> pass
*&%  -> pass 

标签: regex

解决方案


首先警告:不同语言有许多正则表达式实现,所以一些细节可能会有所不同,但这些通常在所有平台上都是正确的:

使用正则表达式,您可以使用[and]定义一个字符类,它是一组可以匹配的字符。见:https ://www.regular-expressions.info/charclass.html

因此,要匹配任何英文字母,您可以使用[A-Za-z]. (虽然这不会匹配重音字母。)同样,您可以将数字与[0-9]. (这不会匹配在其他脚本(如阿拉伯语)中表示数字的字符。)您可以匹配任何带有[A-Za-z0-9].

您还可以通过以 . 开头来否定^字符类。所以[^0-9]匹配除了那些 10 位字符之外的任何内容。同样[^A-Za-z0-9]匹配除英文字母和数字以外的任何内容。

许多平台上的常见字符类都支持一些速记:

  • \d匹配任何数字 (0-9),但在某些平台上,这也将匹配任何表示任何脚本中数字的字符(阿拉伯语等)
  • \w匹配任何“单词”字符,这是您通常可以在变量名中使用的任何字符:字母、数字和_. 同样,在某些平台上,这将在任何脚本(阿拉伯文、西里尔文等)中被视为字母的任何内容
  • \D是 的补码\d并匹配任何不在\d.
  • \W是的补码\w

见:https ://www.regular-expressions.info/shorthand.html

因此,对于您的情况,您可能希望该类[^A-Za-z0-9@]匹配除这些字符之外的任何内容。

然后您可以在末尾添加量词+以匹配一次或多次。[^A-Za-z0-9@]+

见:https ://www.regular-expressions.info/repeat.html


推荐阅读