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

正则表达式括号表达式中转义字符\的有效性验证

测试Bash正则表达式中括号内的转义字符行为

为了搞清楚正则表达式^[-[:alnum:]\._]+$里括号表达式中的转义字符\到底起什么作用,我写了个简单的Bash脚本,用来验证输入是否是有效文件名:

# 验证输入是否为有效文件名
read -p "Enter a single item > "
if [[ "$REPLY" =~ ^[-[:alnum:]\._]+$ ]]; then
    echo "'$REPLY' is a valid filename."
else
    echo "The string '$REPLY' is not a valid filename."
fi

已完成的测试步骤

  • 执行脚本命令:bash read_validate.sh
  • 输入测试内容:test.tst.
  • 得到的反馈:'test.tst.' is a valid filename.

这里值得注意的是,在Bash的括号表达式([])里,.本来就是普通字符,不需要转义,但脚本里写成\._也能正常匹配——转义后的.依然被当作普通字符处理,所以输入末尾的.被正则匹配到,判定为合法文件名。

接下来的测试计划

我打算继续测试包含\的输入内容,看看这个正则表达式会不会把反斜杠认定为合法的文件名字符。毕竟原正则里并没有把\列入允许的字符范围,理论上带\的输入应该会被判定为无效,不过还是得实际跑一遍测试才能确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:06:58