You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为指定正则表达式添加特殊字符与空格的额外验证?

解决方案

这里是满足你需求的正则表达式:

r'^(?:[A-Za-z0-9А-Яа-яЇїІіЄєҐґ]+|[:?!\-\+\(\)\.,ʼ=№#&](?: (?=[A-Za-z0-9А-Яа-яЇїІіЄєҐґ]|$))?| (?=[A-Za-z0-9А-Яа-яЇїІіЄєҐґ]|$))+$'

规则说明

这个正则严格遵循你的要求:

  1. 禁止连续特殊字符:通过正向预查限制特殊字符后只能接普通字符、单个空格+普通字符,或直接结尾,避免两个特殊字符相邻(包括不同类型的特殊字符)
  2. 允许特殊字符后跟单个空格:特殊字符分组中包含可选的空格匹配,且限定空格后只能接普通字符或结尾
  3. 禁止连续空格:所有空格匹配都通过预查限制后面不能是空格,同时确保空格只能单独出现

各部分拆解

  • ^ / $:锚定字符串首尾,确保整个内容都符合规则
  • (?:...):非捕获分组,用于组合匹配规则并重复执行
  • [A-Za-z0-9А-Яа-яЇїІіЄєҐґ]+:匹配一个或多个允许的普通字符(字母、数字、乌克兰语字符),支持连续出现
  • [:?!\-\+\(\)\.,ʼ=№#&](?: (?=[A-Za-z0-9А-Яа-яЇїІіЄєҐґ]|$))?:
    • 匹配单个特殊字符
    • 可选匹配一个空格,且该空格后必须是普通字符或字符串结尾(避免空格后接特殊字符或另一个空格)
  • (?=[A-Za-z0-9А-Яа-яЇїІіЄєҐґ]|$):匹配单个空格,限定其后面只能是普通字符或结尾(彻底杜绝连续空格)

测试示例

  • ✅ 合法输入:"abc123АБВ"、"Hello, world!"、"№456 test?"、"End with space: "
  • ❌ 非法输入:"abc,,def"(连续特殊字符)、"abc def"(连续空格)、"abc,?def"(特殊字符间接连续)、"abc.. def"(连续特殊字符)

内容的提问来源于stack exchange,提问作者Losdrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:29:56