求解下边的正则表达式用来匹配什么格式的字符串?

正则规则如下

preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $field, $matches)

麻烦能否给出什么格式的字符符合这样的匹配

阅读 2.5k
3 个回答
'/
(?: # 不捕获
    ^ # 开始位置
    [
        ^\[ # 非[
    ]+ 
)    # 总结就是 从开始匹配非[的字符串
    |   # 或
\[  # [
    [
        ^] # 非]
    ]*
\]  # ]
    # 总结就是 "中括号[" + "非]的字符串" + "中括号]" 
/x';

这么说吧,有两种情况是匹配不上的
[asdf
[asdf]]
匹配两种情况:
1 开头不是[的多个字符;
2 在[]中的0个或多个字符,而且括号里没有]。

你这个正则就是CI框架下的input类里_fetch_from_array这个方法中的一个过滤的正则。主要用来过滤处理的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题