2015-06-02 3 views

ответ

3

Вы можете использовать:

/\b([1-9])\g{1}0\b/ 

RegEx Demo

Распад регулярное выражение:

\b  # word boundary 
[1-9] # match digit 1-9 and group them as captured group #1 
\g{1} # back-reference to group #1 
0  # match 0 
\b  # word boundary 
+0

1. Это не соответствует 110 2. Вы знаете, что я думаю о коде только ответы – Rizier123

+0

Он соответствует 110 – anubhava

+0

https: // regex1 01.com/r/mP6vR8/1 не для меня – Rizier123

1

Вот короче регулярное выражение, которое должно работать:

/^([1-9])\1[0]$/ 

Он использует обратную ссылку для первого совпадающего символа в соответствии со вторым. Это обеспечивает 11, 22, 33 и т. Д. Шаблон.

Вот объяснение символов, используемое в выражении от regex101:

  • ^ позиция утверждают в начале строки
  • первой Capturing группа ([1-9])
    • [1-9] матча один символ в диапазоне от 1 до 9
  • \1 соответствует тот же текст, как совсем недавно, совпавшего с 1 захватывая группы
  • [0] соответствует символу 0 буквально
  • $ Assert позиции в конце строки

Вы можете проверить его здесь: https://regex101.com/r/oV6rE7/1

+1

Вторая группа захвата бесполезна, удалите Это. –

+1

Несомненно. Удалено сейчас. Я думаю, что это улучшило производительность, хотя это делает решение одним символом дольше, так как вам нужно избегать следующего «0», и это не улучшает читабельность imo. – while

+0

Вы правы, я не видел двусмысленности из-за следующего '0'. Несколько обходных решений без группы захвата: https://regex101.com/r/hH5cZ5/1 (версия 1,2,3) –

Смежные вопросы