如何使用正则表达式校验key:value;格式的字符串是否合法
键值对格式校验正则表达式
适用规则
匹配满足以下要求的字符串:
- 单组键值对为
键:值格式,键和值之间用英文冒号分隔 - 多组键值对之间用英文分号分隔
- 字符串末尾的英文分号可选
- 键、值本身不允许包含英文冒号、英文分号
最终正则
^([^:;]+:[^:;]+)(;[^:;]+:[^:;]+)*;?$
正则拆解说明
^:匹配字符串起始位置,避免前缀非法字符([^:;]+:[^:;]+):匹配1组合法的键值对[^:;]+:匹配键,+限定键非空,且内容不允许出现英文冒号、分号::固定匹配键值之间的英文冒号分隔符[^:;]+:匹配值,规则和键一致
(;[^:;]+:[^:;]+)*:匹配0组或多组后续键值对,每组必须以英文分号开头,后跟合法键值对;?:匹配末尾可选的英文分号$:匹配字符串结束位置,避免后缀非法字符
适配调整说明
- 若允许键/值为空,将所有
[^:;]+替换为[^:;]*即可 - 若不允许键/值中出现空白字符,将所有
[^:;]替换为[^:;\s]即可
用例验证结果
有效用例(全部匹配成功)
k1:v1;k2:v2;k1:v1;k2:v2somekey:value;k2:v2;
无效用例(全部匹配失败)
k1,v1;k2,v2(键值使用逗号分隔,不符合规则)k1 v1; k2 v2;(键值使用空格分隔,不符合规则)
内容的提问来源于stack exchange,提问作者krishna amarghade
相关产品推荐
相关产品推荐

