用于字符串验证的正则表达式 [x_name1_zded|we3e_name2_235|yyy_name3_3435]

RegEx for String Validation [x_name1_zded|we3e_name2_235|yyy_name3_3435]

我有要求检查,是否在产品中获得有效输入

产品字符串示例 =“x_name1_zded|we3e_name2_235|yyy_name3_3435”

每个保护都用“|”分隔。

每个产品信息都用“_”分隔

在此示例中有 3 个产品

1->x_name1_zded

2->we3e_name2_235

3->yyy_name3_3435

每个产品有 3 个详细信息,示例产品 1 id:x,名称:name1,商店:zded。

我需要 RegEx 来验证我们是否用“|”分隔,至少应该有 3 个部分(id、名称、商店),用户可以发送 N 个带有“|”的产品。 所以 RegEx 应该验证产品是否存在,而不是应该有 3 个部分。

我正在尝试在 Json 模式验证器中,在模式部分

假设,每个详情部分可以包含a-z个字母和0-9个数字,至少1个符号。详细信息部分将是 [a-z0-9]+。我们必须至少有 3 个部分除以 _ - 有一个部分,然后至少有 2 个“定界符 + 部分”序列(伪代码):

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

在正则表达式中,单个产品将是:

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

接下来。可以是N个产品。如果 N 是任何大于或等于 1 的值——那么我们可以使用相同的模式:

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

所以正则表达式的最终版本是:

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

\| 是转义分隔符,因为 | 是正则表达式元符号。 * 表示“零次或多次”。

您可以在描述您的详细信息部分的任何其他正则表达式中替换 [a-z0-9]+

例如,参见 example