【发布时间】:2021-07-14 11:33:45
【问题描述】:
我有一个用于存储 IP 地址的表单。 表单验证必须有 3 个条件。
- 用户必须输入整个 IP 例如:(100.10.10.100)
- 用户输入前 2 个部分并在其余字段中添加星 *,例如:(100.10.*.*)
- 用户输入前 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 是一个很好的资源