我有一个文本字符串,成为保存下来的文件名的一部分。我需要删除任何非法字符(即非字母数字,仅基于拉丁字符)

这是我到目前为止的内容:

弄清楚了,regex-fu水平恢复正常!

function isValidFilename(fname)
{
  var rexp = new RegExp(/[^a-zA-Z0-9]/gim)
  return fname.replace(rexp, "")
}

var v = "my$filename"
alert(v + "\nis valid???\n\n" + isValidFilename(v))

v = "myfilename"
alert(v + "\nis valid???\n\n" + isValidFilename(v))

最佳答案

您应该针对有效字符进行验证,而不是删除无效字符

[]组中的^将否定该组。

您可以使用替换为/[^A-Za-z0-9.-]/来消除不属于该组的所有字符

09-27 08:47