正则表达式只允许使用字母数字

fig*_*r20 6 regex

我正在尝试使用正则表达式执行以下操作...

  • 只有AZ和0-9
  • 它本身不是一个角色
  • 不能只是自己的数字
  • 可以只是自己的字母,但至少2个字符

到目前为止我有这个http://regex101.com/r/yW1pV8 ...

.*[a-zA-Z]{2,}+.*
Run Code Online (Sandbox Code Playgroud)

这似乎符合我的标准,除了它不会阻止我放入其他字符,如$ _!等等...

一些正确的测试数据是......

579 International Road
International Road
Run Code Online (Sandbox Code Playgroud)

一些不正确的数据是......

679
3
$£
A
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

ars*_*jii 8

.*匹配任何东西,这似乎不是你想要的。此外,您不需要+, 因为X{n,}已经意味着X 至少 n几次。最后,你忘记了那0-9部分。所以看起来像这样:

[a-zA-Z0-9]{2,}
Run Code Online (Sandbox Code Playgroud)

一些正则表达式风格具有[a-zA-Z0-9]预定义的字符类。例如,在 Java 中它是\p{Alnum}.

如果您还想允许空格(根据您的测试数据),请使用\s

(?:\s*[a-zA-Z0-9]{2,}\s*)*
Run Code Online (Sandbox Code Playgroud)