正则表达式需求:字符串含指定符号需被字母包裹
符合要求的正则表达式解决方案
需求回顾
- 字符串仅由字母、点(.)、逗号(,)、连字符(-)组成
- 点、逗号、连字符必须被字母包裹:不能出现在字符串开头/结尾,也不能连续出现(比如
..``,,--或者混合连续符号都不允许)
最终正则表达式
^[a-zA-Z]+(?:[.,-][a-zA-Z]+)*$
正则拆解
^[a-zA-Z]+:强制字符串开头必须是一个或多个英文字母,直接排除符号开头的情况(?:[.,-][a-zA-Z]+)*:非捕获组,用来匹配“符号+字母”的组合:[.,-]:匹配允许的三个符号中的任意一个[a-zA-Z]+:符号后面必须跟至少一个字母,保证符号被字母包裹*:这个组合可以出现0次或多次,既支持纯字母的字符串,也支持带多个合法符号的字符串
$:强制字符串结尾必须是字母,排除符号结尾的情况
示例验证
- 正确示例:
a.bc-d.e、abc、x,y-z - 错误示例:
.a(符号开头)、a..b(连续符号)、ab-(符号结尾)、,abc(符号开头)
JSON Schema 配置示例
{ "type": "string", "pattern": "^[a-zA-Z]+(?:[.,-][a-zA-Z]+)*$" }
内容的提问来源于stack exchange,提问作者Artem
相关产品推荐
相关产品推荐

