我正在检查一个字符串是否符合以下格式:
10_06_13
即今天的日期,或具有“2digits_2digits_2digits”的类似日期。
我所做的:
regex='([0-9][0-9][_][0-9][0-9][_][0-9][0-9])'
if [[ "$incoming_string" =~ $regex ]]
then
# Do awesome stuff here
fi
这在一定程度上起作用。但是当传入的字符串等于011_100_131
时,它仍然通过正则表达式检查。我如何修复我的正则表达式以只接受正确的格式?
1条答案
按热度按时间fruv7luv1#
=~
成功,如果左边的字符串 * 包含 * 与右边的正则表达式匹配。如果你想知道字符串 * 是否匹配 * 正则表达式,你需要在两边“锚”正则表达式,像这样:^
只在字符串的开头成功,而$
只在字符串的结尾成功。注意事项:
1.我从正则表达式中删除了不必要的
()
,从[[ ... ]]
中删除了""
。=~
就成功。