^([a-zA-Z&-',.]+ )*[a-zA-Z&-',.]+$
Шаблон говорит, что это должно быть ноль или более слово с пробелом , за которым следует слово .
^
будет привязывать шаблон, соответствующий началу значения, а $
привязывает в конце значения. Комбинация этих двух означает, что шаблон будет совпадать только в том случае, если все значение совпадает. Без якорей шаблон будет соответствовать всему, что содержит шаблон. Ваш RegEx в вопросе имеет только начальную привязку, поэтому он будет соответствовать значению, начинающемуся с заданного вами шаблона.
Предположение: я использовал ваш RegEx без пробела в качестве определения слова ; но вы могли бы хотеть, чтобы точка запятая (и т. д.) была частью разделителя слов, а не частью слова. Если это так, то заключите пробел в квадратные скобки и переместите туда эти символы.
P.S. помните, что дефис в квадратных скобках используется в качестве индикатора диапазона, поэтому [&-']
означает диапазон символов от амперсанда до апострофа. Если вы просто пытаетесь использовать дефис в качестве символа, сделайте его первым символом в скобках, чтобы избежать этой неоднозначности.
Также обратите внимание, что в вашем вопросе говорится о числах, и ваш шаблон не охватывает этого, поэтому вам может потребоваться добавить 0-9
к обоим определениям word .