我尝试使用正则表达式检查索引字符串(例如$string = "[index]"
)。必须根据索引名称中的非法字符[
和]
检查此索引。因此,例如[in[dex]
必须失败。
我的第一次尝试:
/^\[[^\[\]]*\]$/
因此字符串必须以[
和]
开头和结尾。对于否定的字符类,我现在尝试使内联方括号非法,但这不起作用。
有什么想法吗?
先谢谢,
约翰尼
编辑:我很困惑。我重新运行我为此编写的测试,现在工作正常。想想我在编辑的历史中工作时遗漏了一些东西。感谢大家的帮助。
答案 0 :(得分:3)
这/^\[[^[\]]+\]$/
对我有用。
/^\[[^[\]]+\]$/.test("[index]") // true
/^\[[^[\]]+\]$/.test("[in[dex]") // false
/^\[[^[\]]+\]$/.test("[in]dex]") // false
/^\[
以括号[^
打开“不是”语法[\]
排除字符]+
关闭不要说我们只想要1个不通过语法的东西(改为星号以匹配[])\]$/
表达式将以结束括号结束。答案 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)
/^\[[^][]+\]$/
这就是你要找的东西吗?
答案 3 :(得分:0)
我现在能够看到正确的正则表达式不起作用的唯一原因是,如果在PHP中引用时没有正确地转义它。它应该引用类似:"/^\\[[^[\\]]*\\]$/"
。