正则表达式 - 如何排除“%”和“_”?

时间:2013-01-14 01:56:30

标签: javascript jquery regex

我允许在我的html文本框中除%_之外的数字,字母和特殊字符。我有模式/[a-zA-Z0-9!@#$^&*()-+=]/。我认为这不是最好的方法,因为我必须列出除了提到的两个之外的所有特殊字符。有没有办法我不必列出所有特殊字符,不包括提到的两个?顺便说一下,我正在使用javascript正则表达式。

有关演示,请参阅http://jsfiddle.net/ce8Th/

请帮忙。

4 个答案:

答案 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);