2012-04-19 49 views
1

我正在一个西班牙网站上工作,我在该网站上进行搜索,我们不允许在键盘上发送这些特殊字符(!@#$%^ & *()_ + - = [] \ {} |;'':“./ <>?)。在网站的英文版本中,我们在java脚本中做了一些这样的term.replace(/\W|_/g," ");这允许所有的字母表(大写和小写)以及数字和过滤。这些特殊字符如何排除特殊字符并允许西班牙文/英文字母?

以同样的方式我应该如何把所有的英语/西班牙语字母,数字和排除这些字符

回答

2

改变正则表达式下面应该工作:

在字符类的开头取消它

/[^\wáéíóúñ]|_/gi 

^,所以这可以被理解为“匹配未在[a-zA-Z0-9_áÁéÉíÍóÓúÚñÑ]所有字符,并且:

/[^\wáÁéÉíÍóÓúÚñÑ]|_/g 

或者像MДΓΓБДLL在评论中指出也匹配_“。

请注意,您可以将当前的正则表达式简化为/[\W_]/g

+0

您可以通过使字符类不区分大小写来简化字符类。 '/ [^ \wáéíóññ] | _/gi' – 2012-04-19 18:35:49

+0

@MДΓΓБДLL,我不确定这是否适用于西班牙字符,谢谢! – 2012-04-19 18:39:31

+0

+1并且只是一个音符,但是'/ [\ W _]/g'更好,因为你不需要改变,它实际上比OP的原始长度长一个字符:) – Robbie 2012-04-19 18:42:16

相关问题