r.test("абвabc"), кстати, тоже покажет true. У вас регулярка написана так, что она возвращает true, если в строке есть хотя бы один символ из [A-Za-z0-9], но она совсем не запрещает использовать кроме разрешённых символов остальные. Если в куче неразрешённых символов будет хотя бы один разрешённый, она вернёт true. Нужно по краям регулярки добавить символы начала и конца строки:
var r = new RegExp("^[A-Za-z0-9]+$");