0

セミコロンで区切られた文字列を検証する必要があります。

例:

;XYZ;2;200;event18=2.5;eVar12=Sale
  1. 開始セミコロンが必要です。
  2. 「XYZ」セクションは必須であり、任意の長さの任意の単語または空白文字にすることができます。
  3. 「2」要素は必須で、長さが不明な数値でなければなりません。
  4. 「200」セクションは必須で、長さが不明な数値でなければなりません。
  5. 「event18=2.5」はオプションです。存在する場合、イベント番号は常に 1 桁または 2 桁の数字であり、= 記号の後には長さ不明の数字があり、小数点が含まれる場合があります。
  6. 「eVar12=Sale」はオプションです。存在する場合、eVar 番号は常に 1 桁または 2 桁の数字であり、= 記号の後には単語文字と空白の任意の組み合わせが続きます。

私はこれを数時間叩いてきましたが、私は正規表現の初心者であり、答えはかなり複雑だと思いますか? どんな助けでも大歓迎です。

4

3 に答える 3

1

次のようなことを試してみてください:

^;[A-Za-z ]+(?:;[0-9]+){2}(?:;event[1-9][0-9]?=[0-9]+(?:\.[0-9]+)?)?(?:;eVar[1-9][0-9]?=[A-Za-z ]+)?$

正規表現101のデモ

しかし、 で示されている文字、数字、およびアンダースコアのような「単語文字」を意味する場合は\w、次のように使用できます。

^;[\w ]+(?:;[0-9]+){2}(?:;event[1-9][0-9]?=[0-9]+(?:\.[0-9]+)?)?(?:;eVar[1-9][0-9]?=[\w ]+)?$
于 2013-09-17T11:29:41.427 に答える
1

パターン:

^;([\w\s]+);(\d+);(\d+)(?:;event(\d{1,2})=(\d+(?:.\d*)))?(?:;eVar(\d{1,2})=([\w\s]+))?$

JavaScript の例:

var regex = /^;([\w\s]+);(\d+);(\d+)(?:;event(\d{1,2})=(\d+(?:.\d*)))?(?:;eVar(\d{1,2})=([\w\s]+))?$/,
    input = ";XYZ;2;200;event18=2.5;eVar12=Sale";

console.log(input.match(regex));
于 2013-09-17T11:07:41.260 に答える