Найти число с необязательными начальными нулями, но не начиная с другой цифры - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно найти конкретное число с необязательными начальными нулями, но не начинать и не заканчивать другой цифрой.

Пример строки:

"123456, 123456A, A123456, A123456A, 0123456, 9123456, 1234567, ABCD0000123456 or /123456"

Regex, которое я сейчас использую:

"0*?[^1-9]123456(?!\d)"

Текущие совпадения:

 123456
A123456
A123456
0123456
0000123456
/123456

Как избежать совпадений 123456, A123456 и /123456 (из них нужно сопоставить только 123456). A или ABCD может быть любым другим символом, кроме цифр!

Желаемые совпадения:

123456
123456
123456
123456
0123456
0000123456
123456

Какое регулярное выражение для этого?
Заранее спасибо

1 Ответ

2 голосов
/ 19 июня 2019

Вам необходимо удалить [^1-9] и использовать (?<!\d) отрицательный вид сзади перед 0* шаблоном:

(?<!\d)0*123456(?!\d)

См. Демонстрацию регулярных выражений и график регулярных выражений:

enter image description here

Подробности

  • (?<!\d) - цифра сразу слева не допускается
  • 0* - ноль или более 0 цифр
  • 123456 - строка специальных цифр
  • (?!\d) - цифры, расположенные сразу справа от текущего местоположения, не допускаются.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...