#!/usr/bin/perl -w use strict; my @tests = ( 'ATCG', 'ATCGGTATATATRGTCGAYGCRGTCAGA', 'ATCGGTATATATRGTCGAYGCNGTCAGA', ); foreach (@tests) { if(/^[ATCG]*([RYMKSWHBVDN])?(?:[ATCG]|\1)*([RYMKSWHBVDN])?(?:[ATCG]|\1|\2)*$/i){ print "$_ matches\n"; } else { print "$_ does not match\n"; } }