It is wrong to assume that all flavours of regex are the same. In this case, \d is not supported by bash regular expressions. You should change your regex to this:
chk_regex='\.[0-9]+-[0-9]+-[0-9]+\.[0-9]+-[0-9]+-[0-9]+'
Of course, this assumes that when you say \d you don't require anything more than the digits from 0 to 9, as opposed to anything considered to be a digit in your locale. If you want to also match characters outside this range, then [[:digit:]] is probably what you want, instead of [0-9].
If you don't require parameter expansion, it's generally a good habit to use ' rather than ".
I have also removed the leading and trailing .* (as they don't do anything useful) and un-escaped the - (thanks for the comment gniourf_gniourf).
Working example:
$ file_name="xyz_abc_diagnostics.wifi2.2015-07-30.12-30-52.tar.gz"
$ chk_regex='\.[0-9]+-[0-9]+-[0-9]+\.[0-9]+-[0-9]+-[0-9]+'
$ if [[ "$file_name" =~ $chk_regex ]];then
> echo "in obs regex"
> else
> echo "dont triggered"
> fi
in obs regex
As you can see, the pattern matches, so the if branch is taken.
As mentioned in the comments, you can use globs to match this pattern as well:
[[ $file_name = *.+([[:digit:]])-+([[:digit:]])-+([[:digit:]]).+([[:digit:]])-+([[:digit:]])-+([[:digit:]])* ]]
Granted, it's longer to write but globs may be useful if you wanted to loop through files matching this pattern, for example:
for archive in *.+([[:digit:]])-+([[:digit:]])-+([[:digit:]]).+([[:digit:]])-+([[:digit:]])-+([[:digit:]])*
do
# some stuff
done
Note that in the example containing a loop (and in both examples on older versions of bash) you will need to enable extended globs using shopt -s extglob.