I could not find any library that, given an hex value, returns true if the given string is a valid ether private key.
As mentioned by Peter, a private key is a random 256 bit blob. It is a common oversight that there're no restrictions.
It has to be valid for the secp256k1 curve, which means two conditions:
nand has a value of
ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141)
Wallet.fromPrivateKey(<yourkey>) will throw an exception on an invalid input.
Alternatively you can also use the
privateKeyVerify() method from the underlying library
secp256k1 or do it manually with the big number library of your choice.
important: this answer refers to the public address, not private key, see comments.
Every hex string is a valid Ethereum address.
Currently there are no address checksums implemented, so all the
0x<40 hex digits here> are valid. We are considering adding basic ICAP in Geth 1.4.1 or Geth 1.5 to allow inserting additional information into an address that would prevent mistyping them, but until then as long as it's 40 hex characters, it's valid.