当前位置: 首页 > 知识库问答 >
问题:

字符串中只允许字母数字、破折号、下划线和句号(Javascript)

辛承志
2023-03-14

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

我需要从包含文件名的字符串中删除任何不是:

  • 一封信

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

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

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

共有2个答案

尹臻
2023-03-14

补充Lucas之前的回答

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

破折号和句点可以是任何位置。

吕永寿
2023-03-14

使用否定字符类非常简单:

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

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

 类似资料:
  • 问题内容: 我知道如何遍历字符串中的所有字符,但是我正在寻找一种更优雅的方法。 问题答案: 正则表达式只需很少的代码即可解决问题:

  • 我正在尝试构建一个正则表达式来验证用户名,该用户名将包含字母数字字符,并且应该允许<代码>(dot)(撇号)和-(破折号),我尝试了以下正则表达式,但它们不起作用 <代码>/^[a-zA-Z0-9\.-]$/<代码> 请帮帮忙

  • 我正在寻找限制行编辑的方法,以仅接受字母数字字符、破折号和下划线(整行可能只有一个破折号和一个下划线),没有空格。我正在查看RegExp,但后来我留下了这个选项,因为我发现一些博客文章解释说RegExp真的很慢。现在我不知道限制行编辑的最佳方法是什么,所以输出将是我想要的。 你推荐我什么?

  • 所有: 我想做的是使用正则表达式匹配一个只允许[a-Za-z0-9_-]的字符串,格式应该是: 仅从[A-Za-z0-9]开始,然后是[A-Za-z0-9_-]。中间可能有[_-],但如果有,则只允许一次(两个_-,但每个都只有一次机会),并以[A-Za-z0-9]结束。 我只知道如何匹配字母数字字符、破折号和下划线,但不知道如何限制它们的出现时间。 谢谢

  • 我必须拆分一个包含破折号和减号的字符串。我试图根据unicode字符进行拆分(https://en.wikipedia.org/wiki/Hyphen#Unicode),仍然考虑减号与破折号字符相同。我如何解决它? 预期产出 (国家) (美国) -1个 实际输出量 (国家) (美国) //实际上,这里会打印空行,但编辑器会压缩空行 1. 我想在字符串连接期间会发生一些转换,但不确定。欢迎任何解决这