我有一个文本字符串,它成为保存的文件名的一部分。我需要删除任何非法字符(即非字母数字,只有基于拉丁语的字符)
这是我到目前为止所做的:
想出来,正则表达式恢复正常!
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))
答案 0 :(得分:2)
在另一个问题中发现了这一点:
/^[0-9a-zA-Z\^\&\'\@\{\}\[\]\,\$\=\!\-\#\(\)\.\%\+\~\_ ]+$/
取自:Javascript regex for validating filenames
也许你可以用这个来得到你想要的吗?
答案 1 :(得分:2)
您应该验证有效字符而不是删除无效字符
^在[]组内部将否定该组。
您可以使用替换为/ [^^ A-Za-z0-9.-]/来删除不属于该组的所有字符