12

例如:

'1'     => NG
'243'   => NG
'1av'   => OK
'pRo'   => OK
'123k%' => NG

我试过了

 /^(?=^[^0-9]*$)(?=[a-zA-Z0-9]+)$/

但它工作得不是很好。

4

7 回答 7

26

采用

/^(?![0-9]*$)[a-zA-Z0-9]+$/

这个表达式有一个否定的前瞻来验证字符串不仅仅是数字。使用RegExr查看它的实际效果。

于 2012-08-02T08:02:17.170 回答
11

所以我们知道某处必须至少有一个“字母”字符:

[a-zA-Z]

它之前或之后可以有任意数量的字母数字字符(包括零),所以我们[a-zA-Z0-9]*在两边都填充:

/^[a-zA-Z0-9]*[a-zA-Z][a-zA-Z0-9]*$/

这应该够了吧。

于 2012-08-02T08:02:52.200 回答
3

试试这个:

/^(?!^\d*$)[a-zA-Z\d]*$/

编辑:由于这与公认的答案基本相同,我会给你一些不同的东西:

/^\d*[a-zA-Z][a-zA-Z\d]*$/

没有前瞻,没有重复的复杂组,它只是验证至少有一个字母字符。这应该很快。

于 2012-08-02T08:02:37.063 回答
1

试试这个:^(?!\d+\b)[a-zA-Z\d]+$
(?!\d+\b)将避免纯数字,添加 \w+ 然后混合字母和数字。

于 2012-08-02T08:22:26.527 回答
0

这应该可以解决问题,无需向后看:

^(\d*[a-zA-Z]\d*)+$
于 2012-08-02T08:16:04.740 回答
0

试试这个:^[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$

于 2013-03-19T01:58:06.113 回答
0

这是严格的字母数字

String name="^[^a-zA-Z]\\d*[a-zA-Z][a-zA-Z\\d]*$";
于 2016-08-31T13:27:22.363 回答