13

文字と数字のみに一致する正規表現を作成するにはどうすればよいですか?

のようなものを試しました(?>[A-z]+)([a-z0-9]+)

正規表現は次の結果を与えるはずです:

1234b --> true
1234 --> false
abcd --> false
abcd4 --> true
4

4 に答える 4

11

(?:\d+[a-z]|[a-z]+\d)[a-z\d]*

基本的に、1 と a は任意の数字と任意の文字であり、任意の数の英数字で囲まれた 1a または a1 と一致します。

編集:より短く、おそらくより高速になりました

于 2012-12-19T12:01:58.540 に答える
6

他の回答は正しくなく、文字、数字、またはその両方のみを含む任意の文字列を許可します。私の式は、文字のみまたは数字のみで構成される文字列を明確に除外します。

[A-Za-z0-9]*([a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)

任意の数の文字と数字の後に、少なくとも 1 つの文字とその後に数字が続くか、少なくとも 1 つの数字とその後に文字が続きます。

ただし、これを行うためのより簡単な方法がある可能性があります。私のものは長く巻き上げられているようです。そうではないかもしれません。参加したい人はいますか?:P

于 2012-12-19T11:50:45.407 に答える
1

^([a-Z]+[0-9]+|[0-9]+[a-Z]+)[a-Z0-9]*$

TimPietzcker に触発されたより単純なバージョン:

^([a-Z]+[0-9]|[0-9]+[a-Z])[a-Z0-9]*$

于 2012-12-19T11:55:12.163 に答える
0

必要がない場合は、1 つの正規表現にしないでください。両方が一致する必要がある 2 つの正規表現を使用します。Perlでは、このようになります

if ( /[a-zA-Z]/ && /\d/ ) 
于 2012-12-19T13:52:17.387 に答える