【问题标题】:Exact Regex expression for floating point number is not working浮点数的精确正则表达式不起作用
【发布时间】:2020-04-14 11:02:06
【问题描述】:

浮点数的精确正则表达式不起作用,它同时执行整数和浮点数。如果给定的输入没有小数点,它应该不起作用。请帮助我

#!/bin/bash
echo "Enter version code" 
read versionName
if ! [[ "$versionName" =~ ^[+-]?[0-9]+\.?[0-9]*$ ]]; then
echo "Sorry decimal numbers only"
echo "$versionName"
else
sudo  sed 's/\(versionName[[:space:]]*\)"[0-9.]*"/\1"'"${versionName}"'"/' test.txt
fi

【问题讨论】:

  • 为什么要放弃your other profile?你有一系列非常相关的问题。将它们放在一个帐户下是有意义的。

标签: regex shell sed


【解决方案1】:

使用这个:^[+-]?[0-9]+\.[0-9]+$

                   ^ no "?" -- making the decimal point compulsory

                          ^ "+" instead of "*" matching one or more, not 0 or more because otherwise "12." would match too (unless you do want it to match too)

【讨论】:

    【解决方案2】:

    在您的初始正则表达式 ^[+-]?[0-9]+\.?[0-9]*$ 中,“?”在...后面 '。'使得正则表达式接受零或 1 个点。你想要的是:^[+-]?[0-9]+\.[0-9]+$ 请注意此正则表达式末尾的“+”,它也强制 1 个或多个数字跟随点。 例如“1”。不会被接受,但会接受“1.234”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 2017-02-13
      • 2012-09-20
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多