简体   繁体   中英

Regex: only alphanumeric but not if this is pure numeric

For instance:

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

I tried with

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

but it is not working very well.

Use

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

This expression has a negative lookahead to verify that the string is not only numbers. See it in action with RegExr .

So we know that there must be at least one "alphabetic" character in there somewhere:

[a-zA-Z]

And it can have any number of alphanumeric characters (including zero) either before it or after it, so we pad it with [a-zA-Z0-9]* on both sides:

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

That should do the trick.

Try with this:

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

Edit : since this is essentially the same of the accepted answer, I'll give you something different:

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

No lookaheads, no repeated complex group, it just verifies that there's at least one alphabetic character. This should be quite fast.

try with this: ^(?!\\d+\\b)[a-zA-Z\\d]+$
(?!\\d+\\b) will avoid pure numeric, add \\w+ then mix alphabet and number.

这应该可以解决问题,无需回头看:

^(\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]*$";

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM