我无法解释,但请查看以下内容:
name=$1
pat="\b[0-9a-zA-Z_]+\b"
if [[ $name =~ $pat ]]; then
echo "$name is ok as user name"
else
echo "$name is not ok as user name"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
测试运行:
./script test_user+
test_user+ is ok as user name
Run Code Online (Sandbox Code Playgroud)
带有+号的用户名不应与该正则表达式匹配.
首先:
\b是PCRE的延伸; 它在ERE中不可用,ERE=~是bash[[ ]]语法中的运算符使用的.
其次,\b如果您希望强制整个字符串匹配,则不需要单词boundary().您想匹配start(^)和end($):
pat="^[0-9a-zA-Z_]+\$"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |