You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则校验所有文本均在括号内(PostgreSQL plpgsql场景)

PostgreSQL plpgsql 整段文本括号包裹校验方案

直接用 PostgreSQL 原生的正则匹配操作符 ~ 即可实现一次校验,不需要拆分处理括号前后内容。

1. 严格模式(括号外不允许有任何字符,包括空白符)

要求整个字符串的第一个字符是左括号,最后一个字符是右括号,中间可包含任意内容:

IF word ~ '^\(.*\)$' THEN
    -- 符合规则:所有内容都被括号包裹,括号外无内容
ELSE
    -- 不符合规则
END IF;

2. 宽松模式(允许括号外仅存在空白字符)

如果业务允许括号前后有空格、换行等空白内容,只要求非空白内容全部在括号内,调整正则即可:

IF word ~ '^\s*\(.*\)\s*$' THEN
    -- 符合规则
ELSE
    -- 不符合规则
END IF;

3. 带括号闭合校验的严格模式

如果需要同时保证括号是成对闭合的(包含内部嵌套的括号场景),使用支持递归匹配的正则:

IF word ~ '^\(([^()]|(\((?1)\)))*\)$' THEN
    -- 不仅整体被括号包裹,内部所有括号也成对闭合
ELSE
    -- 不符合规则
END IF;

该方案相比原来多次调用regexp_replace、substring再计算长度的实现,代码更简洁,执行效率更高,单次正则匹配即可完成全部校验逻辑。

内容的提问来源于stack exchange,提问作者nimgwfc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:57:02