在字符串中只允许使用字母数字,短划线,下划线和句点(Javascript)

时间:2014-11-25 00:40:37

标签: javascript regex

我正在编写文件上传页面脚本(Javascript)。用户从他们的机器中选择一个文件。

我需要从包含非文件名的字符串中删除任何内容:

  • 一封信
  • 一个数字
  • 短划线
  • 下划线
  • 一段时间

我一直在尝试使用Javascript替换功能来删除不必要的字符。我可以使用以下方法删除所有非字母数字部分:

rawFilename = data.files[0].name;  
safeFilename = rawFilename.replace(/\W/g, '');

留下字母,数字和下划线,但我还需要允许破折号和句号。我不确定选择短划线和句号的正确正则表达是什么。

2 个答案:

答案 0 :(得分:5)

使用否定character class

非常简单
str = str.replace(/[^\w.-]+/g, "");

唯一的问题是-需要在列表中的第一个或最后一个,因为它可以被解释为范围运算符。

答案 1 :(得分:0)

添加到卢卡斯的先前答案

str = str.replace(/[^\w\.\-]/g, "");

虚线和句点可以在任何位置。