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

时间:2014-04-02 00:31:17

标签: regex

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

  • 仅A-Z和0-9
  • 自己不是一个字符
  • 不能只是自己的数字
  • 可以只是自己的字母,但至少有2个字符

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

.*[a-zA-Z]{2,}+.*

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

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

579 International Road
International Road

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

679
3
$£
A

我哪里错了?

2 个答案:

答案 0 :(得分:4)

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

[a-zA-Z0-9]{2,}

某些正则表达式使用[a-zA-Z0-9]作为预定义的字符类。例如,在Java中它是\p{Alnum}

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

(?:\s*[a-zA-Z0-9]{2,}\s*)*

答案 1 :(得分:0)

// you are initializing the reader for the file
FileReader inone = new FileReader("myfile.txt");

// reading the first byte to the 't' variable
int t=inone.read();

// if file is empty, 't' will contain -1
// and loop won't start
while (t!=-1) {
   // if t does not contain -1, then end of file is not reached
   // printing byte
   System.out.print((char)t);

   // reading the next byte
   t=inone.read();
}

对于阿尔法数字