如何在 ORACLE APEX 中将特殊字符列入白名单

How to whitelist special characters in ORACLE APEX

我只是想知道如何最大限度地利用 regexp_like 将特殊字符列入白名单。当声明值为 $

时,结果为无效

白名单

下面是我的代码

declare
  l_value varchar2(32767) := '$';
begin
  if regexp_like(l_value,'[a-zA-Z0-9]$“-/\?!%.,:;’()') then
    dbms_output.put_line('valid');
  else
      dbms_output.put_line('invalid');  
  end if;
end;

谢谢大家

您的代码有几个问题:

  • 所有字符都应该在方括号之间,方括号表示要加入白名单的字符列表
  • 只要 class 中的 l_value 中有单个字符,它就会呈现有效。为避免检查开始 ^ 和结束 $
  • 之间的所有字符
DECLARE
  l_value varchar2(32767) := '$';
BEGIN
  IF REGEXP_LIKE(l_value,'^[a-zA-Z0-9$"/\?!%.,:;’()-]*$') THEN
    dbms_output.put_line('valid');
  ELSE
    dbms_output.put_line('invalid');  
  END IF;
END;
/

使用 select 中的一组样本数据进行测试更容易 - 如下所示:

WITH sampledata (v) AS
(
  SELECT '$' FROM dual UNION ALL
  SELECT '$foo' FROM dual UNION ALL
  SELECT '+' FROM dual UNION ALL
  SELECT '_' FROM dual UNION ALL
  SELECT 'f_oo' FROM dual 
)
SELECT * FROM sampledata
 WHERE REGEXP_LIKE(v,'^[a-zA-Z0-9$"/\?!%.,:;’()-]*$');