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

Bash中验证逗号分隔字符串:仅含X/Y/Z加数字的校验方案

Bash 逗号分隔字符串的格式验证方案

你的原有代码存在两个核心问题:

  1. 仅排除了部分特殊字符,无法覆盖所有非法字符(比如非X/Y/Z的字母、空格等)
  2. 只检查字符串包含X/Y/Z,未校验每个元素的格式(比如X3Y6这种连写的非法元素会被误判)

正确的验证方案

使用扩展正则表达式精准匹配合法格式,确保字符串仅由「X/Y/Z(大小写)+任意数字」的元素通过逗号分隔组成,无其他非法字符。

实现代码

#!/bin/bash

check_valid_format() {
    local input="$1"
    # 正则规则:开头到结尾必须是一个或多个合法元素,元素间用逗号分隔
    local valid_pattern='^([XxYyZz][0-9]+)(,[XxYyZz][0-9]+)*$'
    
    if [[ $input =~ $valid_pattern ]]; then
        echo "OK"
    else
        echo "Not OK"
    fi
}

# 测试示例
check_valid_format "X4,Y1,Z5"    # 输出 OK
check_valid_format "Z2,y6,X1"    # 输出 OK
check_valid_format "X3Y6,Z8"     # 输出 Not OK
check_valid_format "A1,B2,X8"    # 输出 Not OK
check_valid_format "N1P8*"       # 输出 Not OK
check_valid_format "X"           # 输出 Not OK(仅字母无数字)
check_valid_format "Y7,"         # 输出 Not OK(末尾多余逗号)

正则规则解释

  • ^:匹配字符串起始位置
  • [XxYyZz][0-9]+:匹配单个合法元素:X/Y/Z(大小写)后接至少一个数字
  • (,[XxYyZz][0-9]+)*:匹配0个或多个「逗号+合法元素」的组合,支持多元素分隔
  • $:匹配字符串结束位置

这样可以严格校验所有符合要求的输入,同时排除各种非法格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:18:14