if [[ " " =~ ^[0-9]*$ ]]; then echo "si"; else echo "no"; fi; //Echoes No
if [[ "" =~ ^[0-9]*$ ]]; then echo "si"; else echo "no"; fi; //Echoes Yes
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我错过了什么?
这正如预期的那样。您指定了 0 次或多次 ( *) 一个数字 ( [0-9])。空字符串是它的 0 倍。
使用 a +(这意味着“1 次或多次”)而不是 a *:
if [[ " " =~ ^[0-9]+$ ]]; then echo "si"; else echo "no"; fi; // Should echo No
if [[ "" =~ ^[0-9]+$ ]]; then echo "si"; else echo "no"; fi; // Should echo No
Run Code Online (Sandbox Code Playgroud)