使用正则表达式检查像模式的索引

时间:2011-07-11 21:28:14

标签: php regex

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

我的第一次尝试:

/^\[[^\[\]]*\]$/

因此字符串必须以[]开头和结尾。对于否定的字符类,我现在尝试使内联方括号非法,但这不起作用。

有什么想法吗?

先谢谢,
约翰尼


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

4 个答案:

答案 0 :(得分:3)

/^\[[^[\]]+\]$/对我有用。

/^\[[^[\]]+\]$/.test("[index]") // true
/^\[[^[\]]+\]$/.test("[in[dex]") // false
/^\[[^[\]]+\]$/.test("[in]dex]") // false
  1. /^\[以括号
  2. 开头
  3. [^打开“不是”语法
  4. [\]排除字符
  5. ]+关闭不要说我们只想要1个不通过语法的东西(改为星号以匹配[])
  6. \]$/表达式将以结束括号结束。

答案 1 :(得分:0)

你应该使用preg_match工作。如果您使用的是ereg,那么它将无法正常工作。 Ereg已被弃用as of PHP 5.3。我在regextester.com上针对以下内容尝试了你的正则表达式,它在preg下运行并在ereg下失败。

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

答案 2 :(得分:0)

/^\[[^][]+\]$/

这就是你要找的东西吗?

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

答案 3 :(得分:0)

我现在能够看到正确的正则表达式不起作用的唯一原因是,如果在PHP中引用时没有正确地转义它。它应该引用类似:"/^\\[[^[\\]]*\\]$/"