关于分隔名称 - 值对的正则表达式?

时间:2018-04-27 19:37:30

标签: regex

我有一个简单的正则表达式,用于解析字符串的名称 - 值对,名称 - 值对用等号分隔并用逗号分隔,例如:

名1 =值1,2 =值2,NAME3 =值3

此表达式完美地解析它

(?<key>[^=,]+)=(?<value>[^,]+)

除了如果逗号或等号出现在名称或值中,则它只是截断字符串。所以,如果我有

Name1=Value=1

它只匹配

Name1=Value

如何让它将整个结果丢弃为无效而不是截断它?

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式验证您的输入,如果它不匹配则丢弃它:

^[^,=]+=[^,=]+(?:,[^,=]+=[^,=]+)*$

RegEx Demo

请注意它与Name1=Value1,Name2=Value2,Name3=Value3匹配,但不匹配无效输入Name1=Value1,Name2=Value2,Name3=Value3,Name=Value=1

RegEx说明:

  • ^:开始
  • [^,=]+=[^,=]+:匹配单个name=value
  • (?:,[^,=]+=[^,=]+)*:匹配0个或更多name=value
  • $:结束
相关问题