【问题标题】:REGEX for IP address which is incomplete用于不完整 IP 地址的 REGEX
【发布时间】:2021-07-14 11:33:45
【问题描述】:

我有一个用于存储 IP 地址的表单。 表单验证必须有 3 个条件。

  1. 用户必须输入整个 IP 例如:(100.10.10.100)
  2. 用户输入前 2 个部分并在其余字段中添加星 *,例如:(100.10.*.*)
  3. 用户输入前 3 个部分并在最后一个字段中添加星 * 例如:(100.10.10.*)

我的表单是这样的

<form method="post" class="get-ip" action="action.php" name="get-ip" id="get-ip">
  <label for="ip-address">Enter IP Address</label>
  <input type="text" class="ip-address" id="ip-address" name="ip-address">
  <input type="submit" class="submit-ip" name="submit-ip" value="Submit IP">
</form>

我的验证看起来像这样

if(isset($_POST["submit-ip"])){
  $ip = $_POST["ip-address"];
  $ipCheck = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/';
  if(preg_match($ipCheck, $ip)){
    /*Do something*/
  }
}

这就是我已经走了多远。 我可以验证 IP 是否真实,但我被困在第 2 点和第 3 点,因为我没有任何符合这些条件的正则表达式。

编辑 我设法获得了第三个 REGEX,即

$thirdCondition = '/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[*]?)$/';

我现在被困在第二种情况

【问题讨论】:

  • 拥有三个正则表达式。更容易处理
  • 我同意@mplungjan。这不是性能关键代码,有时代码越多越好。你也可以分解. 上的字符串,然后只写几个if 语句,这样将来会做什么就非常明显了。
  • @mplungjan 我不知道如何制作正则表达式你能帮我吗
  • Regex101.com 是一个很好的资源

标签: php html regex


【解决方案1】:

有 3 个正则表达式

$first_condition = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/';
$second_condition = '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.[*]\z/';
$third_condition = '/^\d{1,3}\.\d{1,3}\.[*]\.[*]\z/';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 2012-07-01
    • 2015-12-18
    • 2012-07-03
    • 1970-01-01
    • 2017-05-04
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多