JavaScript-Regex删除代码/特殊字符/数字等
JavaScript - Regex to remove code / special characters / numbers etc
Wiktor Stribiżew建议回答:
function myValidate(word) {
return (word.length === 1 || /[^A-Z]/i.test(word)) ? true : false;
}
你好,在创建数组的过程中,我有一个函数,不允许将带有某些字符等的单词添加到数组中
function myValidate(word) {
// No one letter words
if (word.length === 1) {
return true;
}
if (word.indexOf('^') > -1 || word.indexOf('$') > -1) {
return true;
}
return false;
}
这似乎不是解决这个问题的正确方法,我一直在寻找一个正则表达式来处理它,但没有成功地实现它,尝试了很多努力,比如:
if (word.match('/[^A-Za-z]+/g') ) {
return true;
}
有人能告诉我们处理这件事的正确方法吗?
我建议使用一个更简单的解决方案:
function myValidate(word) {
return (word.length === 1 || /[^A-Z]/i.test(word)) ? false : true;
}
var words = ["Fat", "Gnat", "x3-2741996", "1996", "user[50]", "definitions(edit)", "synopsis)"];
document.body.innerHTML = JSON.stringify(words.filter(x => myValidate(x)));
其中:
word.length === 1
检查字符串长度/[^A-Z]/i.test(word)
检查字符串中是否存在非ASCII字母符号
如果满足上述任何条件,则从数组中取出该单词。剩下的就剩下了。
编辑:使用test
而不是match
您想要使用test()
,因为它会返回一个bool,告诉您是否匹配regex。相反,match()
总是返回匹配的元素。这些可以通过强制方式转换为true
。这不是你想要的。
总之,你可以只使用这一行(不需要if
,也不需要报价,再简单不过了):
return word.test(/^[a-zA-Z][a-zA-Z]+$/); // two letter words
您应该将字符列入白名单,而不是列入黑名单。这是安全的原则之一。在你的情况下,不要告诉什么是错的,而是告诉什么是对的:
if (word.test('/^[a-zA-Z]+$/')) { // two letter words
return false;
}
对于仅包含[a-zA-Z]
字符的所有单词,这将返回false。我想这就是你想要的。
相反,正则表达式通过用前导^
否定字符组来查找非法字符。
两个建议:
只要以积极的方式使用regex(没有否定),它就会更容易理解。
此外,验证函数通常返回
true
表示好数据,返回false
表示坏数据。
这样更可读:
if (validate(data))
{
// that's some good data we have here!
}
相关文章:
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- REGEX (javascript) - 允许字母数字字符中的特殊字符不在第一个位置
- 限制用户仅输入特殊字符和数字
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- JavaScript-Regex删除代码/特殊字符/数字等
- 为数字输入添加特殊字符
- 如何使用 JavaScript 删除字符串中除数字和空格之外的所有特殊字符
- 角度.js - 将带有特殊字符和数字的字符串转换为数组并使用 ng-repeat 显示
- 密码正则表达式:“至少 1 个字母、1 个数字、1 个特殊字符,并且不应以特殊字符开头”
- 密码的正则表达式必须包含至少八个字符,至少一个数字以及小写和大写字母以及特殊字符
- 正则表达式密码必须包含字母,至少一个特殊字符和至少一个数字
- 验证输入是否仅包含特殊字符而不包含任何数字
- 正则表达式避免使用特殊字符,并且不应以数字开头
- 正则表达式只允许字母数字和特殊字符不起作用
- 只允许数字和特殊字符,不允许使用字母
- JavaScript正则表达式允许至少一个特殊字符和一个数字
- 正则表达式严格检查字母数字和特殊字符
- 限制用户输入特殊字符和数字
- 在检查字符串是否至少有5位数字时,没有字母或特殊字符会产生意外结果
- 正则表达式,包括除*和&之外的所有字母、数字和特殊字符;