gpt4 book ai didi

jquery - 拒绝特殊字符 jQuery Validate

转载 作者:行者123 更新时间:2023-12-03 22:21:25 25 4
gpt4 key购买 nike

我需要使用插件 jQuery Validate 验证文本区域,为此我使用正则表达式并向插件添加一个方法:

$.validator.addMethod(
"regex",
function(value, element, regexp) {
var check = false;
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"No special Characters allowed here. Use only upper and lowercase letters (A through Z; a through z), numbers and punctuation marks (. , : ; ? ' ' \" - = ~ ! @ # $ % ^ & * ( ) _ + / < > { } )"
);

然后在选项中添加正则表达式:

comments:{
required: true,
maxlength: 8000,
regex: /[^A-Za-z\d\-\=\~\!@#\%&\*\(\)_\+\\\/<>\?\{\}\.\$‘\^\+\"\';:,\s]/
}

这以某种方式“起作用”,它确实检测到无效字符并显示消息,问题是它仅在特殊字符是框中唯一的字符时才起作用,例如:

| `` ° ¬ // This shows the error message but...
test | // This won't show the message

因此,如果存在一个允许的字符,那么验证就会停止工作。我错过了什么吗?

附注我很确定这与插件有关,因为我只用 javascript 测试了正则表达式,它运行良好。

最佳答案

不测试特殊字符是否存在,而只测试有效字符的存在

regex: /^[A-Za-z\d=#$%...-]+$/

... 替换为您想要允许的所有特殊字符。在上面的示例中,允许使用 #$%-。注意:您不必转义 [] 内的(大部分)字符。

如果您想允许 -,它必须是最后一个字符,否则正则表达式会尝试解析范围。 (例如,[a-c] 匹配 a、b 和 c。[a-c-] 匹配 a、b、c 和 -)

此外,如果您想允许 ^,它不能是第一个字符,否则正则表达式会将其视为一种 not 运算符。 (例如,[^abc] 匹配除 a、b 或 c 之外的任何字符)

<小时/>

在上面的示例中,完整的正则表达式可能如下所示

regex: /^[A-Za-z\s`~!@#$%^&*()+={}|;:'",.<>\/?\\-]+$/

说明

NODE                     EXPLANATION
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
[A-Za- any character of: 'A' to 'Z', 'a' to 'z',
z\s`~!@#$%^&*()+={}| whitespace (\n, \r, \t, \f, and " "), '`',
;:'",.<>/?\\-]+ '~', '!', '@', '#', '$', '%', '^', '&',
'*', '(', ')', '+', '=', '{', '}', '|',
';', ':', ''', '"', ',', '.', '<', '>',
'/', '?', '\\', '-' (1 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string
<小时/>

check it out!

关于jquery - 拒绝特殊字符 jQuery Validate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com