如何在 Unix 中檢查變數(可修改)字串?

如何在 Unix 中檢查變數(可修改)字串?

我在 Bash Shell 上使用 Unix,並希望驗證它是否具有以下形式:

[0-9*][,[0-9*]*]

因此,以下字串都是有效的:

  • 141,325,562
  • 65
  • 659,948,8465,9853,2659,156,884,351,0,451,01,10

我的 Unix 相當基礎,因此我們將不勝感激。

答案1

bash要符合,zsh或中 shell 變數的內容ksh93

re='^[0-9]+(,[0-9]+)*$'
[[ $string =~ $re ]] && echo matches

POSIXly:

case $string in
  ("" | *[!,0-9]* | ,* | *, | *,,*) ;;
  (*) echo matches;;
esac

伯恩利:

expr " $string" : ' [0-9]\{1,\}\(,[0-9]\{1,\}\)*$' > /dev/null &&
  echo matches

要匹配輸入行:

grep -xE '[0-9]+(,[0-9]+)*'

我們使用+(或 BRE 等效項\{1,\})來匹配1或更多數字。*會匹配0或更多。

答案2

您想要的正規表示式可能是這樣的:

[0-9]*[,[0-9]+]*

此外,您可以使用此工具即時檢查正規表示式:https://regex101.com/

相關內容