java string 实现like_SQL String match with Like

I'm trying to validate a string with a like pattern, which only consists of the following characters and I'm getting close to it but can still bypass my curernt expression:

valid characters: numbers 0-9, alphanumeric chars + . =

expression:

'%[^[0-9A-Za-z+._-=\]]%' ESCAPE ''

But with that expression, also strings with square brackets and "-"-characters are counted as correct. If I swap the inner brackets to normal brackets like so

'%[^(0-9A-Za-z+._-=\)]%' ESCAPE ''

I still have the same issue but this time with normal brackets. Test data I'm toying with:

IF OBJECT_ID('TEMPDB..#temp') IS NOT NULL DROP TABLE #temp

CREATE TABLE #temp(

string varchar(max),

expectedResult varchar(max),

result varchar(max)

)

insert #temp(string,expectedResult)

values

('da)ssdas', 'invalid'),

('DFGHJ§$%', 'invalid'),

('+=8rt8\//12=+', 'invalid'),

('[BIGBEAR]', 'invalid'),

('BIG-BEAR', 'invalid'),

('x[BIGBEAR]x', 'invalid'),

('(BIGBEAR)', 'invalid'),

('+=8rt8Ahd12=+', 'valid')

update #temp

set result = CASE WHEN string like '%[^[0-9A-Za-z+._-=\]]%' ESCAPE ''

THEN 'invalid'

ELSE'valid'

END

select * from #temp

result

string expectedResult result

da)ssdas invalid invalid

DFGHJ§$% invalid invalid

+=8rt8\//12=+ invalid invalid

[BIGBEAR] invalid valid

BIG-BEAR invalid valid

x[BIGBEAR]x invalid valid

(BIGBEAR) invalid invalid

+=8rt8Ahd12=+ valid valid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值