我正在尝试删除重音符号和除破折号(-)、下划线(_)之外的特殊字符并保留扩展名。
例如:
\n\xc3\x81\xc3\x89\xc3\x8d\xc3\x93\xc3\x9a\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\x87\xc3\xa3\xc3\xa7.,~!@#$%&_-12345.png
到:
\nAEIOUaeiouaeiouaeiouCac_-12345.png
我得出了这个结果,但问题是它忽略了所有点。我只需要忽略最后一个出现的地方以保留文件名的扩展名。
\n"\xc3\x81\xc3\x89\xc3\x8d\xc3\x93\xc3\x9a\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\x87\xc3\xa3\xc3\xa7.,\\~!@#$%&_-12345.png".normalize(\'NFD\').replace(/\\[^a-zA-Z0-9-_\\]/g, "")\nRun Code Online (Sandbox Code Playgroud)\n我已经尝试过像这样的负面观察:
\n/[^a-zA-Z0-9-]+(?<!\\.)/g\nRun Code Online (Sandbox Code Playgroud)\n使用这个参考,但我没有成功。
\n"\xc3\x81\xc3\x89\xc3\x8d\xc3\x93\xc3\x9a\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\x87\xc3\xa3\xc3\xa7.,~!@#$%&-12.34.5.png".normalize(\'NFD\').replace(/[^a-zA-Z0-9-]+(?<!\\.)/g, \'\')\nRun Code Online (Sandbox Code Playgroud)\n如果在这种情况下我有多个点,它只会删除第一个..
排除任何的负前瞻.后跟任何字母或数字(而后跟非单词字符)的负前瞻是可行的。
/[^a-zA-Z0-9-._]|\\.(?![a-zA-Z0-9]+\\b)/g\nRun Code Online (Sandbox Code Playgroud)\n替代方案[^a-zA-Z0-9-._]是[^\\w.-].
解释
\n| 部分 | 描述 |
|---|---|
[^a-zA-Z0-9-._] | 排除任何字母、数字、连字符、下划线和点 |
| | 或者 |
\\.(?![a-zA-Z0-9]+\\b) | 排除任何后面不跟一个或多个字母和/或数字和非单词字符的点 |
例子
\n/[^a-zA-Z0-9-._]|\\.(?![a-zA-Z0-9]+\\b)/g\nRun Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |