【发布时间】:2011-07-19 18:59:44
【问题描述】:
如何验证仅允许数字字母和“.”、“/”、“_”、“-”等字符且仅允许 40 个字符的字符串。
我正在做类似REGEXP_LIKE(path, '[a-zA-Z0-9_./-]{2,40}$') 的操作,但效果不佳。
谁能帮我解决这个正则表达式?
【问题讨论】:
如何验证仅允许数字字母和“.”、“/”、“_”、“-”等字符且仅允许 40 个字符的字符串。
我正在做类似REGEXP_LIKE(path, '[a-zA-Z0-9_./-]{2,40}$') 的操作,但效果不佳。
谁能帮我解决这个正则表达式?
【问题讨论】:
嗯,它不会限制为 40 个字符,因为它没有锚定到字符串的开头。试试:
REGEXP_LIKE(path, '^[a-zA-Z0-9_./-]{2,40}$')
除此之外,我看不出有什么明显的错误,当然假设您的意思是最小长度为 2 个字符。
【讨论】:
^ 锚,它不会限制为 40,因为这样它就会匹配字符串末尾的 40 个字符。在此之前可能会有 5K 的乱码,而正则表达式仍然会找到匹配项。
可能需要添加行首特殊字符^,即:^[a-zA-Z0-9_./-]{2,40}$
【讨论】: