Почему мое регулярное выражение для сопоставления слов в PHP не работает должным образом? Кванторы диапазона при отрицатPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Почему мое регулярное выражение для сопоставления слов в PHP не работает должным образом? Кванторы диапазона при отрицат

Сообщение Гость »


Я использую PHP 7.4, а также PHP 8.2, и у меня есть регулярное выражение, которое я использую в PHP для сопоставления слов (имен). Честно говоря, я едва узнаю этого созданного мной монстра регулярных выражений. Таким образом, этот вопрос требует помощи в его выяснении. По сути это следующее:

Код: Выделить всё

$is_word = preg_match('/^(?![aeiou]{3,})(?:\D(?![^aeiou]{4,}[aeiou]*)(?![aeiou]{4,})){3,}$/i', $name);
I’ve been using it for about 6+ years to match names in a script I have created: It will basically return a boolean of or if it matches a word pattern.
But today it returned on two names which should be deemed valid:
  • Li
  • Drantch
To test this out, you can use the following batch of test names; using pseudo names for example sake:
  • Nartinez
  • Drantch
  • Dratch
  • Xtmnprwq
  • Yelendez
  • Boldberg
  • Yelenovich
  • Allash
  • Mohamed
  • Li
I attempted to adjust the regex to set the second to

Код: Выделить всё

$is_word = preg_match('/^(?![aeiou]{3,})(?:\D(?![^aeiou]{5,}[aeiou]*)(?![aeiou]{4,})){3,}$/i', $name);
It helped in cases which match names like “Drantch” but then it still completely missed two-letter names like “Li.”
How can this regex be tweaked to properly match all names? If not all names, how can it be adjusted to properly match “Drantch” and other obvious names other that “Li.”
Note that, “Xtmnprwq” is a fake test name so I can test negatives as well as positives.


Источник: https://stackoverflow.com/questions/781 ... quantifier
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»