【问题标题】:Validate only alpha characters, single/double quotes, space and comma in array in Javascript在 Javascript 中仅验证数组中的字母字符、单引号/双引号、空格和逗号
【发布时间】:2020-11-06 14:48:49
【问题描述】:

所以,我正在尝试使用函数验证数组中的 alpha char 数据类型。如果数组不只包含 alpha char 和可能的符号(单/双引号、逗号和空格),则记录一条消息。我尝试主要使用 RegExp 迭代数组中的每个元素,首先使用 !==。还尝试先将数组加入字符串并针对正则表达式进行验证,但似乎不太正确。基本上我希望第一个数组能够不间断地验证并继续到脚本的其余部分和 array1 来记录消息。这就是我所处的位置,任何帮助都是王牌。

array = ['hello', 'hello'];
array1 = ['hello', 'hello1'];

var arrayChar = new RegExp(/[a-z',"\s]/i);

function validateArrayChar(array,char) {
  array.every(function(element) { 
    if (!char.test(element)) {
           console.log("Please re-enter data with valid letters.");
        }  
    });
}

validateArrayChar(array1, arrayChar);

【问题讨论】:

  • 您试图在构造函数中反转正则表达式?您应该正常编译正则表达式对象,然后您可以使用RegExp#test()! 运算符来查看是否匹配。并且不要将g 标志与.test() 中使用的正则表达式一起使用。
  • 我对编程很陌生,我做了一个编辑,那会更内联吗?我仍然没有得到正确的输出?

标签: javascript arrays regex validation


【解决方案1】:

您不能通过在构造函数中使用 ! 来反转 RegExp。试试这个:

array = ['hello', 'hello'];
array1 = ['hello', 'hello1'];

var arrayChar = new RegExp(/^[a-z',"\s]+$/i); // This means the string must contain only what is between brackets, at least 1 character.

function validateArrayChar(array,char) {
  return array.every(function(element) { 
    return arrayChar.test(element);
  });
}

console.log(validateArrayChar(array1, arrayChar)); // Will return false, at least one character is invalid
console.log(validateArrayChar(array, arrayChar)); // Will return true

正则表达式参考:https://cheatography.com/davechild/cheat-sheets/regular-expressions/

【讨论】:

  • 感谢您的提醒,虽然这似乎没有在 validateArrayChar(array1, arrayChar); 时记录消息?将代码准确复制到编辑器中。
  • 是的,我已经更新了我的代码和正则表达式,因为我不记得 every 期望所有元素都返回 true 才能返回 true 本身。
  • 谢谢!这适用于验证,我只是做了一个额外的函数来根据布尔值显示消息。干杯。
  • 优秀。我认为这两个答案都可以,如果您觉得其中一个成功了,请尽可能选择它作为答案。
【解决方案2】:

您可以使用箭头函数以更短的方式执行此操作。

更新。我更改了正则表达式,因为如果你在字符串中加上下划线,测试会返回true

var array1 = ['hello', 'hello'];
var array2 = ['hello', 'hello1 \'world\"'];
var array3 = ['hello', 'Hello_'];

var arrayChar = new RegExp(/^[a-z0-9,'"\s]+$/i);


var validateArrayChar = (array, validator) => {
  return array.every(element => validator.test(element));
}

console.log(validateArrayChar(array1, arrayChar));
console.log(validateArrayChar(array2, arrayChar));
console.log(validateArrayChar(array3, arrayChar));

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 2015-10-25
    • 2018-06-19
    • 2015-06-03
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2019-06-27
    相关资源
    最近更新 更多