我有一个简单的正则表达式,用于解析字符串的名称 - 值对,名称 - 值对用等号分隔并用逗号分隔,例如:
名1 =值1,2 =值2,NAME3 =值3
此表达式完美地解析它
(?<key>[^=,]+)=(?<value>[^,]+)
除了如果逗号或等号出现在名称或值中,则它只是截断字符串。所以,如果我有
Name1=Value=1
它只匹配
Name1=Value
如何让它将整个结果丢弃为无效而不是截断它?
答案 0 :(得分:0)
您可以使用此正则表达式验证您的输入,如果它不匹配则丢弃它:
^[^,=]+=[^,=]+(?:,[^,=]+=[^,=]+)*$
请注意它与Name1=Value1,Name2=Value2,Name3=Value3
匹配,但不匹配无效输入Name1=Value1,Name2=Value2,Name3=Value3,Name=Value=1
RegEx说明:
^
:开始[^,=]+=[^,=]+
:匹配单个name=value
对(?:,[^,=]+=[^,=]+)*
:匹配0个或更多name=value
对$
:结束