2016-08-19 2 views
-1

Есть ли способ совпадения слова не, содержащий палиндром (пусть он до тех пор, пока он может)?Регулярное выражение для совпадений с фразами, не содержащими палиндром

Например, для 6-символов длиной палиндром, Foo/бар будет соответствовать, но х barrab ZZ/1 xoxxox а14 не будет соответствовать.

+0

Можете ли вы привести еще один пример? – Harsh

+0

Да, конечно. (для полинома длины 2) Match: Привет, мир, солнце, х, шахта, Голя неигровые: ohho, izzil, 112maam, 01221555 –

+2

Я думаю, вы имеете в виду * палиндром * (не "Полином") – Bohemian

ответ

0

Вы можете использовать \b(?:(?!(\w)(\w)\2?\1)\w)+\b.

Online Demo.

Это простой отрицательный предпросмотр, который проверяет, если слово содержит структуру, как xyx или xyyx.

+0

Фантастический. Спасибо. У меня создалось впечатление, что по какой-то причине JS не поддерживал негативный взгляд (как задал [здесь] (http: // stackoverflow.com/questions/6851921/negative-lookahead-regular-expression)), и поэтому решение Bohemian не помогло. Очевидно нет. –

+0

@GuyWaldman Вероятно, это не сработало из-за якорей начала и конца строки '^' и '$'. –

1

Используйте отрицательный предпросмотр, например, для длины 5/6 (3-писем со средней буквой повторно использован или удвоенной):

^(?:(.)(?!(.)(.)\3?\2\1))*$ 

live demo См.

Но вам нужно будет добавить еще один взгляд вперед для каждой длины (которую я оставляю в качестве упражнения для читателя).

+0

Не работает. https://regex101.com/r/wU6zD1/1 –

+0

Я не могу использовать regex101, но попробуйте сейчас – Bohemian

+0

По-прежнему нет, извините. Я пробовал использовать негативный взгляд самостоятельно безрезультатно. –