正则表达式只允许字母数字字符。

9

我正在尝试使用正则表达式来实现以下目标...

  • 仅包含A-Z和0-9字符
  • 不能单独一个字符存在
  • 不能仅仅是数字
  • 可以只包含字母,但至少需要两个字符

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

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

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

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

579 International Road
International Road

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

679
3
$£
A

我错在哪里了?


你的代码示例没有测试数据...... - scrowler
2个回答

10

.*匹配任何东西,这似乎不是你想要的。另外,你不需要+,因为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*)*

这对我的测试数据不起作用,我已经使用这些数据更新了原始帖子。 - fightstarr20
1
@fightstarr20 看起来你也想允许空格。看看编辑部分。 - arshajii
是的,我刚刚注意到了,缺少了空格!现在这个更好了,但仍然允许数字单独存在。 - fightstarr20
此外,现在空格也被视为一个字符。 - fightstarr20
@fightstarr20 好的,我开始理解需求了。试着进行编辑。 - arshajii
开始有点明白了!但它仍然允许所有数字。 - fightstarr20

0
var pattern = new RegExp(/^(?=.*\d)(?=.*[a-zA-Z]).{2,}$/);
alert(pattern.test(value) + value);

对于字母数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接