Регулярное выражение, которое запрещает двойное подчеркивание, за исключением того, что в конце слова следует символ «х»

1

Мне нужно регулярное выражение, которое запрещает двойное подчеркивание в слове, но с одним исключением: если оно находится в конце и за ним следует x - тогда строка действительна. Порядок символов не играет роли. Например:

Foo_bar__x = VALID
Foo__bar_x = INVALID

Строка может содержать более одного символа подчеркивания и буквенно-цифровых символов. Вот регулярное выражение, которое почти соответствует моим требованиям, оно делает "__" запрещенным, но оно не обрабатывает случай с завершением __x:

^(?!.*__.*)\w+$
  • 0
    ^ ([^ \ S _] + _?) + __ X $
Теги:

1 ответ

2
Лучший ответ

Вы можете использовать это регулярное выражение с отрицательным видом:

/^(?!.*__(?!x$))\w+$/

Демо-версия RegEx

(?!.*__(?!x)) является отрицательным взглядом, который утверждает отказ, когда мы получаем __, за которым следует любой символ, отличный от x в конце ввода.

Вложенный отрицательный lookahead (?!x$) для утверждения двойных подчеркиваний не сопровождается x до конца, чтобы получить успешное совпадение.

  • 0
    Это не должно работать для случая Foo__x_bar, но это делает
  • 0
    Я опечатка х с
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню