求符合项目名校验规则的正则表达式:禁止纯特殊字符输入
Project name(项目名称)字段校验正则方案
可用正则表达式
按照规则要求(允许任意字符组合,不可仅包含特殊字符、必须存在至少1位字母/数字),直接使用以下正则即可:^(?=.*[A-Za-z0-9]).+$
正则逻辑说明
(?=.*[A-Za-z0-9]):正向先行断言,强制要求字符串任意位置至少出现1位大小写字母或数字,从根源拦截全特殊字符的输入.+:匹配长度≥1的任意字符,支持字母、数字、任意特殊字符自由组合,同时自动拦截空输入
如果业务场景允许空输入,仅拦截全特殊字符的非空内容,可将正则调整为
^(?=.*[A-Za-z0-9]).*$
场景校验结果
- 纯字母输入:校验通过,例:
Project、TEST - 纯数字输入:校验通过,例:
20240601、12345 - 字母数字组合输入:校验通过,例:
Proj123、test001 - 字母/数字搭配特殊字符组合输入:校验通过,符合示例要求,例:
zjna5726$7&^#bsg、proj_test@2024 - 仅含特殊字符输入:校验不通过,符合拦截要求,例:
%&*%、@#$^ - 空输入:校验不通过,符合常规表单字段校验要求
此前尝试方案的问题
/^[ A-Za-z0-9_@./#&+-]*$/:一是设置了特殊字符白名单,白名单外的特殊字符(如$、^等)会被误拦截;二是使用*做匹配,空输入会被判定为校验通过,不符合要求^([\w+\d+_]+)((-)([\w+\d+_]+))*:一是仅支持-作为合法特殊字符,其余特殊字符均无法通过;二是限制了特殊字符只能单个间隔出现,无法匹配特殊字符连续存在、特殊字符在字符串开头/结尾的合法输入
内容的提问来源于stack exchange,提问作者Alish Madhukar
相关产品推荐
相关产品推荐

