首页 > 解决方案 > 正则表达式,只允许大括号内的字母数字字符和下划线和特定占位符

问题描述

我想要一个只允许大括号内的字母数字字符和下划线和特定占位符的正则表达式。

有效示例:

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_]- 不允许使用 az 0-9 和下划线以外的任何其他字符。

|^\{placeholder\}- 或者任何没有说 {placeholder}

但它不起作用,我不知道为什么。

这是演示

请帮忙。

标签: phpregexpcre

解决方案


您可以使用

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

细节

  • ^- 字符串的开始
  • (?:- 非捕获组的开始:
    • [A-Za-z0-9_]- 一个单词字符:字母,数字,_
    • |- 或者
    • {placeholder}- 一个特定的子串
  • )+- 小组结束,重复1次或多次
  • $- 字符串结束。

请参阅正则表达式演示和正则

在此处输入图像描述


推荐阅读