用于数字范围和长度的 Oracle 正则表达式
Oracle regular expression for number range and length
我需要验证给定的 IP 地址列表。
IP 地址应在 1.0.0.0 到 255.255.255.255
范围内
以下是我目前所做的:
WITH T(VAL) AS
( SELECT '123.1235.231.234.12' FROM dual
UNION ALL
SELECT '123123' FROM dual
UNION ALL
SELECT '011' FROM dual
UNION ALL
SELECT '011.' FROM dual
UNION ALL
SELECT '000.' FROM dual
UNION ALL
SELECT '123123' FROM dual
UNION ALL
SELECT '192.168.1.65' FROM dual
UNION ALL
SELECT '255.256.1.65' FROM dual
)
SELECT *
FROM t
WHERE REGEXP_LIKE(VAL,'^[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$')
AND REGEXP_SUBSTR(VAL, '[1-9]{1,3}',1,1) BETWEEN 1 AND 255
AND regexp_substr(val, '[0-9]{1,3}',1,2) BETWEEN 0 AND 255
AND REGEXP_SUBSTR(VAL, '[0-9]{1,3}',1,3) BETWEEN 0 AND 255
AND REGEXP_SUBSTR(VAL, '[0-9]{1,3}',1,4) BETWEEN 0 AND 255
它与我测试的数据一起工作正常。
如果我可以用简单的正则表达式做同样的事情,请帮忙。
提前致谢:)
您的正则表达式中存在错误,它与 10.0.0.0
不匹配。
改为:
'^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
后面的测试会被拒0.0.0.0
我需要验证给定的 IP 地址列表。 IP 地址应在 1.0.0.0 到 255.255.255.255
范围内以下是我目前所做的:
WITH T(VAL) AS
( SELECT '123.1235.231.234.12' FROM dual
UNION ALL
SELECT '123123' FROM dual
UNION ALL
SELECT '011' FROM dual
UNION ALL
SELECT '011.' FROM dual
UNION ALL
SELECT '000.' FROM dual
UNION ALL
SELECT '123123' FROM dual
UNION ALL
SELECT '192.168.1.65' FROM dual
UNION ALL
SELECT '255.256.1.65' FROM dual
)
SELECT *
FROM t
WHERE REGEXP_LIKE(VAL,'^[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$')
AND REGEXP_SUBSTR(VAL, '[1-9]{1,3}',1,1) BETWEEN 1 AND 255
AND regexp_substr(val, '[0-9]{1,3}',1,2) BETWEEN 0 AND 255
AND REGEXP_SUBSTR(VAL, '[0-9]{1,3}',1,3) BETWEEN 0 AND 255
AND REGEXP_SUBSTR(VAL, '[0-9]{1,3}',1,4) BETWEEN 0 AND 255
它与我测试的数据一起工作正常。 如果我可以用简单的正则表达式做同样的事情,请帮忙。
提前致谢:)
您的正则表达式中存在错误,它与 10.0.0.0
不匹配。
改为:
'^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
后面的测试会被拒0.0.0.0