-1

I want to match a String if it contains a maximum of 16 digits and a maximum of 11 characters, but with a maximum of 27 characters in total.

I tried (\d{0,16}\w{0,11}){27}, but it doesn't seem to work.

Edit :

MATCH: 145214mkjnkj or 1234567891011125abcdefghijk (can be mixed)

DONT MATCH: abababababab123 or 12345678910111213abc

4

2 に答える 2

1

あなたが望むことは、REGEXで簡単または効率的に実行できるとは思いません。あなたの質問を理解しているように、有効な文字列は最大 27 文字の長さで、数字と文字 ( regex で定義されている\w) のみを含み、最大 16 桁と 11 文字のみを含む必要があります。

これを行うには、いくつかのテストを実行するのが最善の方法です。

  1. 0 ~ 27 文字の単語と数字のみに一致しますか。正規表現:/[\d\w]{0,27}/
  2. 16桁以下ですか?regex:/\d/一致した数を数えます
  3. 11文字以下ですか?regex:/\w/一致した数を数えます

それを1つの正規表現にラップする利点はありません。

NB @nickbが指摘したように、\wクラスにはクラスが含まれている\dため、代わりに使用する独自の文字クラスを定義する必要があるようです\w-[a-zA-Z_]すべてのラテン語(外国語のアクセント付き文字ではない)のアルファベット文字とアンダースコアに一致するようなもの。

于 2012-08-07T15:20:29.113 に答える