A Semi-palindrome Puzzle
Retina 0.8.2, 85 69 bytes

M`^(.+,)*(\d+,)?(?&lt;-1&gt;\1)*$(?(1)^)|M`^(.+,)*(\d+,)?(?&lt;-1&gt;\1)*$(?(1)^)


Try it online! Explanation:

M`


Selects Match mode. In fact, Retina defaults to Match mode for a single-line program, but the second copy of the code would always match if not for these extra characters.

^


Match must start at the beginning.

(.+,)*


Capture a number of runs of characters. Each run must end in a comma.

(\d+,)?


Optionally match a run of digits and a comma.

(?&lt;-1&gt;\1)*


Optionally match all of the captures in reverse order, popping each one as it is matched.

$


Match must end at the end.

(?(1)^)


Backtrack unless all of the captures were popped. It works by requiring the match to still be at the start of the string if we have an unpopped capture, which is impossible.