js reg exp помочь дописать регулярку
мне нужно написать следующую регулярку формат ввода такой
> name:
ATGC
то есть сначала пишем этот знак >, далее пробел, далее имя из любых буковок, далее двоеточие, перенос строки и дальше уже последовательность из таких букв (ATGC), причем такой формат должен повторяться, то есть я могу в таком формате написать сколь угодно последовательность
> name:
ATGC
> name2:
ATCGC
> name3:
TAATGC
Я написал такую регулярку
!/^(> )+[A-Za-z0-9-]+:+\n+[ATCGatcg]{1,}$/
она работает, но только с одной последовательностью, хотя я вроде указываю кватификатор {1,}, но это не помогает я пишу это
> name:
ATGC
и все ок, если начинаю писать еще одну последовательность и дописываю её до конца, то ошибка в общем нужно помочь поставить правильно квантификатор, чтобы я мог писать так:
> name:
ATGC
> name2:
ATGC
> name3:
ATGC
но это естестна не все поле должно правильно отрабатывтаь если мы записали в таком формате
> name:
ATGC
и в таком
ATCGATAGCATGCTACTGAC
это тоже уже есть, это делается просто [ATCGatcg] то есть уже без имени и без ">" при этом регулярка должна так работать, чтобы я мог ввести либо одно либо другое, но не вместе то есть это допустимо
> name:
ATGC
> name:
ATGC
отдельно это тоже допустимо
ATCGATAGCATGCTACTGAC
а вот если вместе
ATCGATAGCATGCTACTGAC
> name:
ATGC
то уже ошибка, мне кажется это самое сложное крч я сделаль вот так, работает как надо, но меня смущают эти if-ы хотелос ьбы в одно регулярку все сделать(
if (
/^(> [-A-Za-z0-9]+:\r?\n[ATCGatcg]+($|\r?\n))+$/.test(e.target.value)
) {
setError(false);
} else if (/^[ATGCatgc]+$/.test(e.target.value)) {
setError(false);
} else {
setError(true);
}
Ответы (1 шт):
var s = `> name:
ATGC
> name2:
ATGC
> name3:
ATGC`
console.log(/^(> [-A-Za-z0-9]+:\r?\n[ATCGatcg]+($|\r?\n))+$/.test(s));
но хотелось бы чтобы просто ACTGATCCTGA тоже работал
var strs = [
`ACTGATCCTGA`
,
`> name:
ATGC
> name2:
ATGC
> name3:
ATGC`
,
`ACTGATCCTGA
> name:
ATGC`
]
for (var s of strs) {
console.log(s + '\n' +
/^((> [-A-Za-z0-9]+:\r?\n[ATCGatcg]+($|\r?\n))+|[ATCGatcg]+)$/.test(s)
);
}
.as-console-wrapper.as-console-wrapper { max-height: 100vh }