目的是允许用户输入适合date --date=
的有效日期时间字符串,或输入 - / +天数。如果输入为[+-]?[0-9]+
(伪),则匹配,否则失败。
[edit]澄清:匹配是为了进一步处理 - + {天为date
的日期时间。一个已经有效的日期时间字符串应该会失败,以避免执行更多处理的&& etc
,这就是为什么我只测试数字的原因(不会匹配必须具有'的日期时间。 '或' - '或' /'嵌入式)。
正则表达式是允许(匹配)三种情况:
它应该输入像" + a1"。
[[ "${DATETIME}" =~ ^(-|\+)?[0-9]+$ ]] && etc
结果是它错误地匹配" a1"," -a1"和" + a1",但正确地失败了" + a"," aa1"或" 1a"等
单个leading-or-amost-leading alpha char如何匹配正则表达式?
答案 0 :(得分:0)
遵循正则表达式模式应该:
^([+-]|[[:digit:]]+$)
^()
匹配行开头的封闭分组模式(字符串)
在捕获的群组()
中,[+-]|[[:digit:]]+$
与[+-]
或[[:digit:]]+$
匹配,即以+
或-
开头的字符串为匹配,并且只包含数字的字符串匹配
再想一想,阅读你的问题对我来说似乎不太清楚,所以我要留下另一个解决方案,如果你想匹配只包含数字的字符串,可以+
或-
在开始时:
^[+-]?[[:digit:]]+$
如果必须存在+
或-
:
^[+-][[:digit:]]+$