Как вы используете string.match ()? Это должно работать:
<script type='text/javascript'>
function clocks(){
var clk = document.getElementById('TIME').value;
var ampm = document.getElementById('AMPM').value;
if (clk.match(/[^0-9:]/)) {
alert("Please enter a valid time");
}
// or, an even more precise regex
if (!clk.match(/^\d+:\d+$/)) {
alert("Please enter a valid time");
}
.....}
</script>
Первое совпадение с регулярным выражением должно проверять все, что НЕ является цифрой или символом ':', и подавать предупреждение, если оно обнаружит что-либо. Второй будет соответствовать любой строке, которая начинается с одной или нескольких цифр, затем символа «:», затем одной или нескольких цифр, а затем конца строки (это формат, который вы пытаетесь сопоставить).