Bay*_*ock 5 javascript regex jquery textarea
我想验证一个textarea,我只是没有得到正则表达式(它花了我一天和一堆教程来弄明白).
基本上我希望能够允许一切(包括换行符和战车),但可能是恶意的角色(那些会导致安全漏洞的角色).由于很少有字符是不允许的,我认为创建黑名单比白名单更有意义.
我的问题是:正则表达式中的标准"除了"之外是什么?
我正在使用javascript和jquery.
我试过这个,但它不起作用(这很糟糕,我知道......):
var messageReg = /^[a-zA-Z0-9éèêëùüàâöïç\"\/\%\(\).'?!,@$#§-_ \n\r]+$/;
Run Code Online (Sandbox Code Playgroud)
谢谢.
mur*_*d99 16
如果你想排除一组字符(例如一些标点字符),你可以^在字符集的开头使用运算符,就像正则表达式一样
/[^.?!]/
Run Code Online (Sandbox Code Playgroud)
这符合不属于任何字符.,?或!.
您可以使用^括号内的第一个字符[]来否定其中的内容:
/^[^abc]*$/
Run Code Online (Sandbox Code Playgroud)
这意味着:"从开始到结束,没有a,b或c".
正如 Esailija 提到的,这对于真正的安全没有任何帮助。
\n\n您提到的代码几乎是一个否定集,正如 murgatroid99 提到的那样,它^位于括号内。因此正则表达式将匹配该列表中不存在的任何内容。但看起来您确实想删除这些字符,因此您的正则表达式不需要被否定。
您的代码应如下所示:
\n\nstr.replace(/[a-zA-Z0-9\xc3\xa9\xc3\xa8\xc3\xaa\xc3\xab\xc3\xb9\xc3\xbc\xc3\xa0\xc3\xa2\xc3\xb6\xc3\xaf\xc3\xa7\\"\\/\\%\\(\\).\'?!,@$#-_ \\n\\r]/g, "");\nRun Code Online (Sandbox Code Playgroud)\n\n也就是说,删除正则表达式中的所有字符。
\n\n但是,这意味着您不想保留,a-zA-Z0-9您确定要删除它们吗?
另外,chrome 不喜欢正则表达式中的 \xc2\xa7,您必须将\\x与字符的十六进制代码一起使用