'RegEx for String Validation [x_name1_zded|we3e_name2_235|yyy_name3_3435]

I have requirement to check, is getting valid input in the product

Example Product String = "x_name1_zded|we3e_name2_235|yyy_name3_3435"

each protect is delimited with "|".

each productInfo is delimited with "_"

in this example 3 products are there

1-> x_name1_zded

2-> we3e_name2_235

3-> yyy_name3_3435

and each product has 3 details, example product 1 id:x, name: name1, store: zded.

i need RegEx to validate if we have delimited with "|", the minimum 3 section(id,name, store) should be there, user can send N number of product with "|". so RegEx should validate if product is there, than should have 3 section.

Iam trying to do it in Json schema validator, in pattern section



Solution 1:[1]

Suppose, each details section can contain a-z letters and 0-9 digits, at least 1 symbol. Detail section will be [a-z0-9]+. We have to have at least 3 section divided by _ - there is one section, then at least 2 sequences of "delimiter + section" (pseudocode):

section (delimiter section)*(2 or more times)

In regex a single product will be:

[a-z0-9]+(_[a-z0-9]+){2,}

Next. It can be N products. If N is any value greater or equals to 1 - then we can use the same schema:

product (delimiter product)*(zero or more times)

So final version of regex is:

[a-z0-9]+(_[a-z0-9]+){2,}(\|[a-z0-9]+(_[a-z0-9]+){2,})*

\| is escaped delimiter, because | is regex metasymbol. * means "zero or more times".

You can replace [a-z0-9]+ on any another regexp describes your details section.

For instance, see example.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1