繁体   English   中英

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

[英]regex - How do I exclude “%” and “_”?

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

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

请帮忙。

不需要那么复杂的循环。 只需直接在整个字符串上调用replace

$(this).val(function (i, v) {
    return v.replace(/%|_/g, '');
});

这是你的小提琴: http//jsfiddle.net/ce8Th/1/

你可以反过来做:

/[%_]/

if (pattern.test( ....

如果你不必使用正则表达式也很好,而不是在这种情况下它会产生很大的不同:

if ("%_".split().indexOf(text.charAt(i)) > -1) {

白名单总是最好的。 除了添加长度修饰符以及开始和结束字符外,我建议您保留所拥有的内容:

/^[a-zA-Z0-9!@#$^&*()-+=]+$/

我是否恰好猜测您是否正在使用此用户输入来查询涉及LIKE以搜索部分匹配的MySQL查询?

如果是这样,请不要排除字符。 相反,在服务器端逃避它们。 例如:

$output = str_replace(Array("%","_"),Array("\\%","\\_"),$input);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM