shell编程中if [[ ! ${a} =~ ^[0-9]+ ]]条件判断式如何工作的?

if [[ ! ${a} =~ ^[0-9]+ ]]这个语句具体是怎么工作的?
我只知道这个好像是如果变量a不是以数字开头就执行if语句,但是
特别的:

  1. =~是什么意思?
  2. ^[0-9]+ 是什么意思? 另外这个判断使用的是扩展正则表达式?

=~意思是匹配后面的正则式,^是匹配开头,[0-9]意思是匹配0-9的字符也就是数字,+是指匹配不少于一次,也就是有不少于一个数字

这里只有
^[0-9]+是正则表达式,表示一个数字,别的都不是正则。

只是原样的字符