无法验证连字符
Unable to validate hyphens
我正在尝试验证包含"字母数字字符、支持的符号和空格"的名称。在这里,我只需要允许单个hyphen(-)
,而不允许双重hyphen(--)
。
这是我的代码如下:
$.validator.addMethod(
'alphanumeric_only',
function (val, elem) {
return this.optional(elem) || /^[^*~<^>+('--)/;|.]+$/.test(val);
},
$.format("shouldn't contain *.^~<>/;|")
);
上面的代码甚至不允许使用单个hyphen(-)
。如何允许使用单连字符,但防止使用双连字符。非常感谢您的帮助。
为此,您需要一个负前瞻断言:
/^(?!.*--)[^*~<^>+()'/;|.]+$/
应该这样做。
解释:
^ # Start of string
(?! # Assert it's impossible to match the following:
.* # any string, followed by
-- # two hyphens
) # End of lookahead
[^*~<^>+()'/;|.]+ # Match a string consisting only of characters other than these
$ # End of string
如果您的字符串可以包含换行符,这并不是说这可能会失败。如果可以,使用
/^(?!['s'S]*--)[^*~<^>+()'/;|.]+$/
我建议您使用白名单而不是黑名单。然而,这是有效的:
<input type="text" id="validate"/>
<script>
$('#validate').keyup(function(){
val = this.value;
if(/([*.^~<>/;|]|--)/.test(val)) this.style.backgroundColor='red';
else this.style.backgroundColor='';
});
</script>
相关文章:
- 如何将单词(包括单词)与连字符匹配
- 删除图形和数字之间的连字符(-)符号
- JQuery根据连字符前的首字母对列表进行排序
- 如何替换javascript字符串中的前三个连字符
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 带有连字符的 Jquery 表排序器编号
- Javascript将所有文本框值更改为连字符
- regex中连字符的这种用法有效吗
- 使用连字符引用对象的属性名称
- 在 Javascript 中使用连字符验证电话号码
- 验证 JavaScript 中的连字符是否只有一个
- 无法验证连字符
- Regex电子邮件验证-域中没有连续的连字符
- JS数字和连字符验证
- 电子邮件验证正则表达式在连字符上失败
- Regex:电子邮件验证,只允许在域名和顶级域名中间出现连字符
- Javascript验证允许在名称中使用空格、连字符和外字符
- Javascript验证日期格式(包括连字符)
- 使用实时验证脚本 - 除 _(下划线)以外的特殊字符 - (连字符).(点)和空格
- 在包含字母、数字、撇号、连字符和空格的文本框中使用正则表达式验证名称