我有一个小问题我真的无法理解:
bash -c 'if [[ "hello" =~ ^[a-zA-Z0-9]\{1,\}\\.$ ]] ; then echo "OK" ; else echo "KO" ; fi
我认为这应该给我KO,它给了我好...... 我想匹配至少有1个字符并以点结尾的东西......
我终于注意到它适用于bash版本4.1.5而不适用于版本3.2.25
我该如何处理这个版本?
编辑:
我找到了一个有效的解决方法,但我不知道为什么我必须将转义点放在括号之间:
bash -c 'if [[ "hello" =~ ^[a-zA-Z0-9]{1,}[\.]$ ]] ; then echo "OK" ; else echo "KO" ; fi'
答案 0 :(得分:3)
您没有逃脱点,因此它被用作通配符并匹配任何字符。将.
替换为\.
此外,使用{1,}
代替+
,因为它们是等效的。
答案 1 :(得分:1)
.
在正则表达式中很常见(“匹配任何字符”)。将其转为\.