我允许在我的html文本框中除%
和_
之外的数字,字母和特殊字符。我有模式/[a-zA-Z0-9!@#$^&*()-+=]/
。我认为这不是最好的方法,因为我必须列出除了提到的两个之外的所有特殊字符。有没有办法我不必列出所有特殊字符,不包括提到的两个?顺便说一下,我正在使用javascript正则表达式。
有关演示,请参阅http://jsfiddle.net/ce8Th/
请帮忙。
答案 0 :(得分:3)
不需要那么复杂的循环。只需直接在整个字符串上调用replace
:
$(this).val(function (i, v) {
return v.replace(/%|_/g, '');
});
这是你的小提琴:http://jsfiddle.net/ce8Th/1/
答案 1 :(得分:2)
你可以反过来说:
/[%_]/
if (pattern.test( ....
如果你不必使用正则表达式也不错,而不是在这种情况下它会产生很大的不同:
if ("%_".split().indexOf(text.charAt(i)) > -1) {
答案 2 :(得分:2)
白名单总是最好的。除了添加长度修饰符以及开始和结束字符外,我建议您保留所拥有的内容:
/^[a-zA-Z0-9!@#$^&*()-+=]+$/
答案 3 :(得分:1)
我是否恰巧猜测您是否正在使用此用户输入来查询涉及LIKE
的MySQL查询来搜索部分匹配?
如果是这样,请不要排除字符。相反,在服务器端逃避它们。例如:
$output = str_replace(Array("%","_"),Array("\\%","\\_"),$input);