ndm*_*web 47 javascript regex string filenames
寻找一个正则表达式/替换函数来取一个用户输入的字符串,例如"John Smith的酷页面",并返回一个文件名/ url安全字符串,如"john_smith_s_cool_page.html",或者某种程度的东西.
Sha*_*mer 115
好吧,这里有一个替换任何不是字母或数字的东西,并且使它全部小写,就像你的例子一样.
var s = "John Smith's Cool Page";
var filename = s.replace(/[^a-z0-9]/gi, '_').toLowerCase();
Run Code Online (Sandbox Code Playgroud)
说明:
正则表达式是/[^a-z0-9]/gi.好吧,实际上gi最后只是一组在使用表达式时使用的选项.
i 意味着"忽略大小写差异"g 意思是"全球",这实际上意味着应该替换每一场比赛,而不仅仅是第一场比赛.所以我们所看到的只是真的[^a-z0-9].让我们一步一步地阅读:
[和]定义"字符类别",其是单字符的列表.如果你写[one],那么它将匹配'o'或'n'或'e'.^在字符列表的开头有一个.这意味着它应该只匹配不在列表中的字符.a-z0-9.将其读作"a到z和0到9".这是一种简短的写作方式abcdefghijklmnopqrstuvwxyz0123456789.所以基本上,正则表达式所说的是:"查找不在'a'和'z'之间或'0'和'9'之间的每个字母".
spe*_*ane 16
我知道原始海报要求一个简单的正则表达式,但是,更多的参与清理文件名,包括文件名长度,保留文件名,当然还有保留字符.
查看node-sanitize-filename中的代码,以获得更强大的解决方案.
为了更灵活和稳健地处理 unicode 字符等,您可以将slugify与一些正则表达式结合使用来删除不安全的 URL 字符
const urlSafeFilename = slugify(filename, { remove: /"<>#%\{\}\|\\\^~\[\]`;\?:@=&/g });
Run Code Online (Sandbox Code Playgroud)
这会在您的 url 中生成不错的 kebab-case filenemas,并允许在a-z0-9范围之外使用更多字符。
| 归档时间: |
|
| 查看次数: |
38035 次 |
| 最近记录: |