正则表达式接受除字母,数字之外的任何东西

时间:2018-08-03 10:23:02

标签: regex

需要正则表达式的帮助,它将接受除字母(Aa-Zz),数字(0-9)和@

以外的任何内容

例如差异输入类型

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

2 个答案:

答案 0 :(得分:4)

首先警告:有许多使用不同语言的正则表达式实现,因此某些细节可能有所不同,但在所有平台上通常都是如此:

使用正则表达式,您可以使用[]定义一个 character class ,它是一组可以匹配的字符。参见: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

答案 1 :(得分:2)

您在这里[^\w@]+

您可能想添加\ n以避免多行字符串上的空匹配:[^\w@\n]+