Двойной экранирование необходимо, поскольку обратная косая черта используется для escape-последовательностей как в JavaScript, так и в регулярных выражениях. Быстрый тест, чтобы проиллюстрировать этот момент:
alert('42'.match("\d")); // no match
alert('42'.match("\\d")); // match
Но это не решает твою проблему. Первый шаг в устранении неполадок: измените проверочное выражение на a
. Разве это не терпит неудачу на "foo" и проходит на "bar"? Если нет, то на вашей странице что-то не так - возможно, из-за несвязанной ошибки JavaScript код проверки пропускается.
Немного не по теме: Ваши выражения проверки могут быть обрезаны до \.
(без плюса), так как вам действительно нужно только сопоставить одну точку.