Я пытаюсь написать регулярное выражение для соответствия следующим правилам:
слово состоит только из букв, цифр, апострофов, дефисов и подчеркиваний
начинаются с буквы или апострофа, за которыми следует буква
- , не содержат последовательности из 2 или более апострофов, подчеркиваний или дефисов
- и заканчиваются буквой, цифрой или апострофомперед буквой s или апострофом, за которым следует s
Пока у меня есть несколько построенных регулярных выражений:
Для правила 2 я построил
^[']?[a-zA-Z][a-zA-Z0-9]+
ДляПравило 3, которое я построил
(?!.*[-_'][-_'])(?=[a-z])[a-zA-Z0-9]*
, но для тестовой строки abc def''ghi
оно соответствует ghi
, а не abc
Для правила 4, которое я построил
.*[a-zA-Z0-9](?:'s)?(?:s')?$
но для тестовой строки test's abc'
она не совпадает ни с чем, но должна соответствовать test's
Я ищу совет для правила 3 и 4 о том, как улучшить мойрегулярное выражение, чтобы они работали