Just evaluate $\langle \lambda, \alpha \rangle$ for all roots $\alpha$. It is sufficient to test the equality for positive roots only. Also, the weight $\lambda$ is regular if and only if it has trivial stabilizer in the Weyl group. For example, if you write $\lambda$ in Bourbaki's "$\epsilon$-basis" then regularity in $A_n$-case means that no two coefficients are the same. For other classical types you need to consider sign changes as well. For exceptionals... well, probably best to use a computer.
If the weight is regular, then its index equals the length of the Weyl group element that brings it to the fundamental chamber. So you need to calculate the length of a Weyl group element. There are several ways to do that, one of them is actually finding the so called reduced expression for your Weyl group element. The algorithm for that should be in several books. I recommended looking in Combinatorics of Coxeter groups by Anders Björner and Francesco Brenti. GAP implementation of one such algorithm is here.
For singular weights I think you need minimal length representative of cosets $W/W_S$ where $W_S$ is the subgroup corresponding to the Levi part of parabolic subalgebra that stabilizes $\lambda$.
For singular weights I think you need minimal length representative of cosets $W/W_S$ where $W_S$ is the subgroup corresponding to the Levi part of parabolic subalgebra that stabilizes $\lambda$.