Cloudinary Public ID 的正则表达式
Regex for Cloudinary Public ID
我需要 (javascript) 正则表达式来验证 Cloudinary Public ID。规则是:
Public ID 格式支持除以下保留字符外的所有可打印字符:? & # \ % < >。此外,空格和正斜杠 (/) 不能用作 Public ID 的第一个或最后一个字符。
试过了,但没用:^[^\s\]+[^?&#\%<>]+$
我参考了这些 SO 问题:Javascript regex - no white space at beginning + allow space in the middle and Regex - Does not contain certain Characters
试试这个正则表达式:
^(?![ \/])(?!.*[ \/]$)(?!.*[?&#\%<>])[ -~]+$
解释:
^
- 断言字符串的开头
(?![ \/])
- 否定先行验证 space 和 /
都不在字符串的开头
(?!.*[ \/]$)
- 否定先行验证 space 和 /
都不在字符串的末尾
(?!.*[?&#\%<>])
- 否定前瞻以确保在字符串 [?&#\%<>]
中找到这些字符中的 none
[ -~]+
- 匹配出现次数超过 1 次的可打印 ascii 字符(space 到 ~
)
$
- 断言字符串结束
我需要 (javascript) 正则表达式来验证 Cloudinary Public ID。规则是:
Public ID 格式支持除以下保留字符外的所有可打印字符:? & # \ % < >。此外,空格和正斜杠 (/) 不能用作 Public ID 的第一个或最后一个字符。
试过了,但没用:^[^\s\]+[^?&#\%<>]+$
我参考了这些 SO 问题:Javascript regex - no white space at beginning + allow space in the middle and Regex - Does not contain certain Characters
试试这个正则表达式:
^(?![ \/])(?!.*[ \/]$)(?!.*[?&#\%<>])[ -~]+$
解释:
^
- 断言字符串的开头(?![ \/])
- 否定先行验证 space 和/
都不在字符串的开头(?!.*[ \/]$)
- 否定先行验证 space 和/
都不在字符串的末尾(?!.*[?&#\%<>])
- 否定前瞻以确保在字符串[?&#\%<>]
中找到这些字符中的 none
[ -~]+
- 匹配出现次数超过 1 次的可打印 ascii 字符(space 到~
)$
- 断言字符串结束