我尝试用正则表达式检查索引字符串(例如$string = "[index]"
)。此索引必须检查索引名称中是否存在非法字符[
和]
。因此,例如[in[dex]
必须失败。
我的第一次尝试:
/^'[[^'[']]*']$/
所以字符串必须以[
和]
开始和结束。对于一个否定的字符类,我现在尝试使内联方括号非法,但这不能正常工作。
任何想法?
in advanced,
约翰尼
编辑:我很困惑。我重新运行了我为此编写的测试,现在它工作得很好。我觉得我在编辑的历史中遗漏了一些东西。谢谢大家的帮助。
这个/^'[[^[']]+']$/
适合我。
/^'[[^[']]+']$/.test("[index]") // true
/^'[[^[']]+']$/.test("[in[dex]") // false
/^'[[^[']]+']$/.test("[in]dex]") // false
-
/^'[
以括号开头 -
[^
打开"not"语法 -
[']
排除字符 -
]+
关闭not并说我们只想要1+传递not语法的东西(更改为星号以匹配[]) -
']$/
表达式将以右括号结束。
/^'[[^][]+']$/
这是你想要的吗?
- 匹配[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