我正在创建虚荣网址,我想只允许用户拥有
'a-z', 'A-Z', '0-9, '.', ' ', '-', '_'
在他们的网址中。
因此,给定一个字符串,我想删除不属于该组的所有字符。
这样做的最佳方式是什么?
最初我循环遍历字符串,然后检查字符是否在此字符串中。
但这显然效率不高......
答案 0 :(得分:4)
str = str.replace(/[^\w\s.-]/g,'');
示例: http://jsfiddle.net/6Efc5/1/
这是一个正则表达式,它匹配全局[^]
集中的任何不,并用空字符串替换它:
\w
字母数字和下划线-
破折号\s
空间.
期间 编辑:因为我在字符集中,所以我真的不需要逃避.
和-
。固定的。
EDIT2:如@Hailwood所述,\s
将匹配几种类型的空白字符。要仅允许' '
字符,而不允许使用标签或换行符,请将\s
替换为一个简单的空格。
答案 1 :(得分:0)
这将匹配列表中没有的任何字符:[^a-z0-9. \-_]
,然后将其替换为空。
myString.replace(/[^a-z0-9. \\-_]/gi, "")