【发布时间】:2017-03-18 07:28:56
【问题描述】:
create or replace trigger "KENTEKEN_CHECK"
after insert or update of kenteken
on auto
for each row
declare
kenteken varchar2;
teller number := 0;
tellerletter number := 0;
tellercijfer number := 0;
begin
kenteken := lower(:NEW.kenteken);
loop
if substr(kenteken, teller, 1) = REGEXP ("[eoiau]") then
raise_application_error (-20502, 'Kenteken kan geen klinkers bevatten.');
elsif substr(kenteken, teller, 1) = REGEXP ("[0987654321]") then
tellercijfer := tellercijfer + 1;
elsif substr(kenteken, teller, 1) = REGEXP ("[qwrtypsdfghjklzxcvbnm]") then
tellerletter := tellerletter + 1;
else raise_application_error (-20502, 'Er is een ongeldig kenteken ingevoerd.');
end if;
teller := teller + 1;
exit when teller = 5;
end loop;
end;
我需要检查车牌(有六个字符)。它至少需要 2 个字母和 2 个数字,并且不允许使用 e、a、o、u 和 i。我应该如何使用REGEXP 正确的方法来检查这个?
-
Teller代表计数器 -
Tellernumber代表数字计数器 -
Tellerletter代表字母计数器
是的,我是这方面的初学者,所以不要责怪我的编码风格......以前从未使用过REGEXP,所以不知道如何使用它。
希望很清楚。
【问题讨论】:
-
字母和数字有什么规律吗?像2个数字然后2个数字..等等
-
我总是使用网站regexr.com 来检查我的正则表达式。
-
欢迎来到 SO。尝试编辑您的问题,添加一些示例数据和所需的结果。如果你需要检查一个字符串,而不是编辑它,你可能需要 regexp_like
-
REGEXP ("[eoiau]") 不能在车牌中,REGEXP ("[0987654321]") 至少 2 个应该在车牌中,还有 REGEXP ("[qwrtypsdfghjklzxcvbnm ]") 至少 2
-
但我想知道这些正则表达式的使用方式是否正确