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

したがって、どこかに少なくとも1つの「アルファベット」文字が存在する必要があることがわかります。

[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]*$/

先読みや複雑なグループの繰り返しはなく、少なくとも1つのアルファベット文字があることを確認するだけです。これはかなり速いはずです。

于 2012-08-02T08:02:37.063 に答える
1

これを試してみてください:^(?!\d+\b)[a-zA-Z\d]+$
(?!\d+\b)純粋な数値を避け、\ w +を追加してから、アルファベットと数字を混ぜます。

于 2012-08-02T08:22:26.527 に答える
0

これを試して:^[a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$

于 2013-03-19T01:58:06.113 に答える
0

これは、後読みなしでトリックを行う必要があります。

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