用正则表达式检查索引模式


Checking index like pattern with Regular Expression

我尝试用正则表达式检查索引字符串(例如$string = "[index]")。此索引必须检查索引名称中是否存在非法字符[]。因此,例如[in[dex]必须失败。

我的第一次尝试:

/^'[[^'[']]*']$/

所以字符串必须以[]开始和结束。对于一个否定的字符类,我现在尝试使内联方括号非法,但这不能正常工作。

任何想法?

in advanced,
约翰尼


编辑:我很困惑。我重新运行了我为此编写的测试,现在它工作得很好。我觉得我在编辑的历史中遗漏了一些东西。谢谢大家的帮助。

这个/^'[[^[']]+']$/适合我。

/^'[[^[']]+']$/.test("[index]") // true
/^'[[^[']]+']$/.test("[in[dex]") // false
/^'[[^[']]+']$/.test("[in]dex]") // false
  1. /^'[以括号开头
  2. [^打开"not"语法
  3. [']排除字符
  4. ]+关闭not并说我们只想要1+传递not语法的东西(更改为星号以匹配[])
  5. ']$/表达式将以右括号结束。
/^'[[^][]+']$/

这是你想要的吗?

  • 匹配[character
  • ]
  • 匹配列表中不存在的单个字符"]["在1到无限次之间,尽可能多的次数,根据需要回馈(贪婪)
  • 匹配一个]字符

我现在能看到的唯一原因是你正确的正则表达式不能工作,如果你在PHP引用时没有正确转义。应该像这样加引号:"/^''[[^['']]*'']$/" .

使用preg_match应该可以工作。如果您使用的是ereg,那么它将无法工作。在PHP 5.3中已经弃用了Ereg。我在regextester.com上尝试了以下regex,它在preg下工作,在ereg下失败。

[index]
[in[dex]
[in[de]x]
d[index]
[inde]x]
[index]d