У меня есть несколько тестовых строк:
- "x"
- "mm"
- "x mm"
- "yy x mm"
- " xx мм y мм "
Я хочу сделать регулярное выражение, которое должно соответствовать строкам 1,2,3,4, но не 5.
Итак, мои ограничения на совпадение:
- Одна последовательность алфавита должна встречаться один раз в строке.(например, «y» - это последовательность один y, а «yy» - это последовательность двух y, но они содержат одинаковый алфавит, поэтому они противоречивы и не могут встречаться вместе)
- В строке допускаются только определенные алфавиты(для моего случая "xym").
- Любая последовательность может встречаться в начале, середине или конце строки.Но он должен иметь префикс или суффикс с несловарным символом, если другая последовательность алфавита предшествует или следует за ней соответственно.
- Нет необходимости, чтобы все последовательности алфавита присутствовали в строке.
Примечание: - Я хочу, чтобы только одно регулярное выражение решило эту проблему.Потому что с отдельным регулярным выражением и итерацией я уже сделал это.Я ищу однострочное решение для проверки моей строки.
Решение, которое я пробовал:
/(?=^[xym\W]+$)((?=^([^m]*\W)?m+(\W[^m]*)?$)|(?=^([^x]*\W)?x+(\W[^x]*)?$)|(?=^([^y]*\W)?y+(\W[^y]*)?$))/
Но оно также соответствует 5-му случаю.