Specifying constraints on nodes in recursive length relationship match

My target to match looks like the following:

(:A) -[:R]-> (:B {val: 1})-> [:R]-> (:B {val : 2} )-> [:R]-> (:B {val: 3})-> [:R]-> (:B {val : 4})-> [:R]->(:C)

and I can match it with

MATCH (:A)-[:R *]->(C)

but is there a way I can specify constraints for the intermediate nodes? E.g. I want to specify that the val property for them should match up in a sequence (1, 2. 3, 4, ...)

use path
Patterns - Cypher Manual "MATCH path=(:A)-[:R *]->(C)"
and then use the nodes in each path with "nodes(path)"
but I won't be that sure that they will be returned in the order in which they are present in the path.
Maybe they are: iterate through the nodes and let us know.