#php #regex
#php #регулярное выражение
Вопрос:
У меня есть выражение, которое я хочу изменить. Это выражение по большей части делает то, что я хочу, однако мне нужно также сопоставлять без учета регистра.
Я сопоставляю имена людей, а также названия компаний. Итак, следующее должно быть сопоставлено, и в настоящее время это не так:
tim’s baKeRY
Вот выражение
#^[A-Z][a-z] [ -][A-Z](')?(?(1)[A-Z])[a-z] $#
Редактировать
Благодаря Gustav я отредактировал свое выражение, чтобы: #^[a-zA-Z] [ -][a-zA-Z](')?(?(1)[a-zA-Z])[a-z] $#
Это приводит к нечувствительности к регистру, что было частью того, что мне было нужно, но мне также нужно сопоставить что-то вроде tim's bakery
Ответ №1:
Вы можете сделать /.../i
в PHP, чтобы сопоставление не учитывало регистр. Однако, если вы хотите исправить то, что у вас есть, вам нужно заметить, что [A-Z][a-z]
будет соответствовать одной начальной заглавной букве, а затем остальным строчным буквам. Если вы хотите сопоставить оба в одном и том же, вам нужно сделать [A-Za-z]
.
Надеюсь, это поможет!
Комментарии:
1. Спасибо, Густав, я отредактировал это, так что теперь это выглядит так:
#^[a-zA-Z] [ -][a-zA-Z](')?(?(1)[a-zA-Z])[a-z] $#
. Это приводит к нечувствительности к регистру, но как сопоставить что-то вродеtims's balery
?2. Я могу предоставить вам любое количество шаблонов регулярных выражений, которые будут соответствовать
tims's belry
, вопрос в том, чему еще вы хотите, чтобы это соответствовало (и чему вы хотите, чтобы это не соответствовало)?3. Спасибо за помощь, Густав. Я пытаюсь сопоставить имена пользователей, а также названия компаний. Из того, что я могу собрать, код должен соответствовать любым общим символам, которые используются в этих именах. Такие, как апостроф, пробел через дефис, и это, я думаю, все. Обычно это часть «я думаю», которая доставляет мне неприятности. 🙂
4. Ну, ваше первое регулярное выражение соответствует очень конкретным вещам (насколько я могу судить, оно допускает такие имена, как O’Reilly), и добавить туда
tim's bakery
«и тому подобное» очень сложно, если вы не знаете точно, чему хотите соответствовать. Названия компаний могут отличаться даже больше, чем личные имена, поэтому я предлагаю вам либо точно определить, чему вы хотите соответствовать, либо просто использовать что-то вроде/[a-zA-Z'- ] /
и быть довольным этим.