Regex:只有字母数字,但如果这是纯数字,则不能

Regex: only alphanumeric but not if this is pure numeric

本文关键字:数字 不能 如果 Regex      更新时间:2024-06-25

例如:

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

我试过

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

但效果不太好。

使用

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

此表达式具有一个负前瞻,用于验证字符串不仅仅是数字。使用RegExr查看它的实际操作。

所以我们知道在某个地方必须至少有一个"字母"字符:

[a-zA-Z]

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

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

这就行了。

试试这个:

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

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

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

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

尝试使用此:^(?!'d+'b)[a-zA-Z'd]+$
(?!'d+'b)将避免纯数字,添加''w+,然后混合字母表和数字。

这应该可以完成任务,而不需要查找:

^('d*[a-zA-Z]'d*)+$

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

这是严格的字母数字

String name="^[^a-zA-Z]''d*[a-zA-Z][a-zA-Z''d]*$";