1

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

这是我到目前为止所拥有的:

想通了,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))
4

2 回答 2

2

在另一个问题中发现了这一点:

/^[0-9a-zA-Z\^\&\'\@\{\}\[\]\,\$\=\!\-\#\(\)\.\%\+\~\_ ]+$/

取自:用于验证文件名的 Javascript 正则表达式

也许你可以用这个来得到你想要的?

于 2013-01-30T10:47:25.093 回答
2

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

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

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

于 2013-01-30T10:51:29.257 回答