我需要验证 Cloudinary 公共(public) ID 所需的 (javascript) 正则表达式。规则是:
公共(public) ID 格式支持除以下保留字符外的所有可打印字符: ? \%<>。此外,空格和正斜杠 (/) 不能用作公共(public) ID 的第一个或最后一个字符。
试过了,但没用:^[^\s\\]+[^?&#\%<>]+$
我引用了这些 SO 问题:Javascript regex - no white space at beginning + allow space in the middle和 Regex - Does not contain certain Characters
最佳答案
试试这个正则表达式:
^(?![ \/])(?!.*[ \/]$)(?!.*[?&#\%<>])[ -~]+$
解释:
-
^
- 断言字符串的开始 -
(?![ \/])
- 否定前瞻以验证既不是空格也不是/
在字符串的开头 -
(?!.*[ \/]$)
- 否定前瞻以验证既不是空格也不是/
在字符串的末尾 -
(?!.*[?&#\%<>])
- 否定前瞻以确保在字符串[?&#\%<>]
中找不到这些字符 -
[ -~]+
- 匹配出现次数超过 1 次的可打印 ascii 字符(空格到~
) -
$
- 断言字符串结束
关于javascript - Cloudinary 公共(public) ID 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48325121/