【问题标题】:Bash regexp for all positive real numbers (excluding 0)所有正实数(不包括 0)的 Bash 正则表达式
【发布时间】:2017-11-02 03:50:58
【问题描述】:

以下正则表达式接受所有正实数(不包括 0)

^(?!0*(\.0+)?$)(\d+|\d*\.\d+)$

它可以工作,例如在 JavaScript 中。 bash 中使用运算符 =~ 进行测试的正确方法是一些与正则表达式一致的变量(例如,字符必须用反斜杠转义)。

Bash 版本是 4.4.12。

【问题讨论】:

  • 您的正则表达式即使在 javascript 中也不起作用:0.050.1.2 不匹配
  • @NahuelFouilleul 他们这样做了,你试过了吗?
  • 可惜我没有把反斜杠加倍

标签: regex bash shell


【解决方案1】:

应该这样做:

if [[ $v =~ ^([0-9]+|([0-9]*[.][0-9]+))$ ]] && ! [[ $v =~ ^(0*(\.0+))$ ]]; then 
    echo "Match"
fi 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多