I am building an application which requires user to paste the transaction hash of a transaction. But i want a regex string i could pass to the pattern attribute of the input element that receives it to validate it. What is the general regexp that validates ethereum transaction hash?
-
Possible duplicate of How can I check if an Ethereum address is valid? – Richard Horrocks Dec 24 '17 at 14:13
-
1@RichardHorrocks It's not a duplicate; this question is about the transaction hash, not the address. I don't see a regex for the transaction hash in that answer. – Jesbus Dec 24 '17 at 14:16
-
Ah, sorry, you're right :-) I read "regex" and ignored everything else :-) Removed duplicate vote. – Richard Horrocks Dec 24 '17 at 14:18
This regex should do the trick:
/^0x([A-Fa-f0-9]{64})$/
-
Keep in mind this only validates if the search contains only the right characters in the right length, not if a transaction exists on the blockchain. – Nick Dec 24 '17 at 17:38
-
-
1I accepted the answer but i will rather go for /^(0x)?([A-Fa-f0-9]{64})$/ because it is also valid incase the source is from some of those who don't include the 0x prefix. Or do you think that should be considered invalid? The API i use to query the transactions accepts transaction IDs without the 0x – Oluwatumbi Dec 25 '17 at 15:06
As you didn't specify the technology you are using, I would suggest validating it against the go-ethereum hexutil
https://github.com/ethereum/go-ethereum/blob/master/common/hexutil/hexutil.go#L60
Here's a simple example written in golang:
// IsValid : validates transaction with go-ethereum utils
func (model *Transaction) IsValid() bool {
_, err := hexutil.Decode(model.Hash)
return err == nil
}