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

#php #regex #pcre

#php #регулярное выражение #pcre

Вопрос:

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

Допустимые примеры:

 test{placeholder}
test_{placeholder}
test_123_{placeholder}
test
test_123
test123
{placeholder}_test
test{placeholder}test
And any combination of above.
  

Это то, что я придумал:

 [^-A-Za-z0-9_]|^{placeholder}
  

Насколько я понимаю, это:

[^-A-Za-z0-9_] — Не допускайте никаких других символов, кроме a-z 0-9 и подчеркивания.

|^{placeholder} — Или все, что не говорит {заполнитель}

Но это не работает, и я не уверен, почему.

Вот демо

Пожалуйста, помогите.

Комментарии:

1. Странно, что вы хотите разрешить буквенно-цифровые символы и подчеркивание, а затем написать регулярное выражение, в котором вы объясняете, что оно их не допускает.

Ответ №1:

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

 ^(?:[A-Za-z0-9_]|{placeholder}) $
  

Подробные сведения

  • ^ — начало строки
  • (?: — начало группы без захвата:
    • [A-Za-z0-9_] — символ слова: буква, цифра, _
    • | — или
    • {placeholder} — определенная подстрока
  • ) — конец группы, повторить 1 или более раз
  • $ — конец строки.

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

введите описание изображения здесь

Комментарии:

1. Спасибо, это именно то, что мне было нужно!