【发布时间】:2021-11-19 15:20:40
【问题描述】:
我想验证一个字符串。条件是:
- 应该是 9 小时长。
- 第一个字符应该是字母(大写)。
- remainig chr 应该在 0 和 9 之间
- 不允许有特殊字符
我想使用REGEXP_LIKE() 验证这一点。请提出建议。
【问题讨论】:
-
好的。你尝试了什么,你在哪里卡住了?
-
regexp_like(string, '^[A-Z][0-9]')
我想验证一个字符串。条件是:
我想使用REGEXP_LIKE() 验证这一点。请提出建议。
【问题讨论】:
您应该能够使用以下 REGEXP_LIKE 来验证您的输入:
REGEXP_LIKE(td.text_value, '^[A-Z][0-9]{8}$')
解释正则表达式:
^ - 字符串开头[A-Z] - 大写字母[0-9]{8} - 正好是 8 位字符$ - 字符串结束这是一个验证某些用例的查询:
WITH test_data (text_value) AS
(
SELECT 'A12345678' FROM DUAL UNION ALL
SELECT 'a12345678' FROM DUAL UNION ALL
SELECT 'A1234567' FROM DUAL UNION ALL
SELECT 'A123456789' FROM DUAL UNION ALL
SELECT '$12345678' FROM DUAL
)
SELECT td.text_value,
CASE WHEN REGEXP_LIKE(td.text_value, '^[A-Z][0-9]{8}$') THEN 'Y' ELSE 'N' END AS VALID
FROM test_data td
这里是 Oracle 正则表达式文档的链接 (Link)
此外,这是一个运行上述查询的 DBFiddle (Link)
【讨论】: