Регулярное выражение, вероятно, не лучшее решение для этой проблемы, но для развлечения:
/^(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5).{5}$/.test("12354")
Это соответствует каждой строке, которая содержит ровно пять символов, являющихся числами 1-5, с одним из каждого.
(?=.*1)
- позитивный взгляд, по сути говоря, "справа от нас должно быть все, что следует или ничего, за которым следует 1".
Lookahead не "потребляют" какую-либо частьрегулярного выражения, поэтому каждая проверка числа начинается с начала строки.
Затем есть .{5}
, чтобы фактически использовать пять символов, чтобы убедиться, что их правильное число.