doushaizhen1244 2011-10-26 10:23
浏览 23
已采纳

有没有更好的方法来编写这个IF语句? [关闭]

if($colour && 
      ((strlen($colour) == 7 && preg_match("/#[0-9a-fA-F]{6}/",$colour)) ||
       (strlen($colour) == 4 && preg_match("/#[0-9a-fA-F]{3}/",$colour)))) {
  • If $colour has a value AND
    • $colour is a 7 digit string and conforms to the 7 digit hex colour format OR
    • $colour is a 4 digit string and conforms to the 4 digit hex colour format

(String lengths include hash, hence 3 & 6 become 4 & 7)

  • 写回答

5条回答 默认 最新

  • douyue2313 2011-10-26 10:28
    关注

    Yes, there are. If you use RegEx, you can just as well use one regex, like this. The length can be skipped too, by using start or string/end of string anchors.

    if ($colour && preg_match("/^#([0-9a-fA-F]){3}(([0-9a-fA-F]){3})?$/", $colour)
    {
    }
    

    I think the 'check for value' can be skipped to, but that might make sense as an optimization.

    [edit]

    It turns out to be an example on the RegEx cheat sheet.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题