Обратите внимание, что [\|\|\&&]
соответствует одиночному символу |
или &
, а не ||
или &&
последовательностям символов. Кроме того, [0-9]
без квантификатора соответствует только одному di git. Без привязок вы можете частично сопоставить строку внутри более длинной строки.
Вы можете использовать
^[0-9]+(?:(?:\|\||&&)[0-9]+)*$
На самом деле, чтобы сопоставить любое место внутри строки, продолжайте использовать шаблон без привязок:
[0-9]+(?:(?:\|\||&&)[0-9]+)*
См. Демонстрацию регулярного выражения
Подробности
^
- начало строки [0-9]+
- 1+ цифр (?:(?:\|\||&&)[0-9])*
- 0 или более повторений (?:\|\||&&)
- ||
или &&
последовательность символов [0-9]+
- 1+ цифр
$
- конец строки.
JS демонстрация:
const reg = /^[0-9]+(?:(?:\|\||&&)[0-9]+)*$/;
console.log( reg.test('1||2') ); // => true