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

如何编写正则表达式验证含固定keyword的指定结构输入字符串

正则实现方案

首先直接给出满足要求的正则表达式:

/^keyword\s+(?!\d+$)[a-zA-Z0-9_]+\((?!\d+$)[a-zA-Z0-9_]+,(?!\d+$)[a-zA-Z0-9_]+\)$/

如果允许参数之间、参数和括号之间存在可选空格(比如keyword test( a1 , b2 )也判定为合法),可以调整为:

/^keyword\s+(?!\d+$)[a-zA-Z0-9_]+\(\s*(?!\d+$)[a-zA-Z0-9_]+\s*,\s*(?!\d+$)[a-zA-Z0-9_]+\s*\)$/

规则拆解说明

  • 固定前缀匹配:^keyword\s+ 强制字符串开头为keyword,后面跟至少一个空白字符
  • 可变字段通用规则:每个input/param_input/param_input2都用(?!\d+$)[a-zA-Z0-9_]+匹配:
    • (?!\d+$) 负向预查逻辑,排除全为数字的非法情况
    • [a-zA-Z0-9_]+ 限制可变字段仅允许包含大小写字母、数字、下划线
  • 结构匹配:\( 匹配左括号,, 匹配参数分隔逗号,\)$ 匹配右括号并强制字符串在右括号处结束

原有正则的问题

  • 错误将固定前缀keyword写成了function,完全不符合需求
  • 没有包含下划线的匹配规则,输入带下划线的可变字段会被误判为非法
  • 没有正确实现「可变字段不能为纯数字」的判断逻辑,纯数字的字段会被误放通
  • 没有匹配括号结构,也没有限制参数只能为2个,不符合给定的格式要求

测试用例参考

  • 合法用例:
    • keyword getUser(user_id,user2_id)
    • keyword delData123(a1,b2)
  • 非法用例:
    • 前缀错误:func getUser(id1,id2)
    • 可变字段纯数字:keyword 123(user,123)、keyword test(123,abc)
    • 字符非法:keyword get-user(user@id,id2)
    • 结构错误:keyword test(a,b,c)、keyword test[a,b]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:48:03