gpt4 book ai didi

javascript正则表达式验证列表以逗号分隔

转载 作者:行者123 更新时间:2023-11-29 21:32:12 24 4
gpt4 key购买 nike

我需要准备正则表达式,它必须验证以逗号分隔的列表要求是

  1. 检查列表是否以逗号分隔
  2. 结尾不得有逗号/逗号
  3. ,, 是不允许的;逗号之间必须有单词
  4. 必须至少有一个逗号

JS : https://jsfiddle.net/bababalcksheep/yyw29bj8/4/

//check if list is separated by commas
//There must be no trailing comma/commas
// ,, is not allowed ; there must be word inbetween commas
// there must be atleast one comma

var test = function(STR) {
return /[-\w\s]+(,[-\w\s]+)*/g.test(STR);
}


//must Pass
console.log('===== PASS ============');
console.log(test('1000,two thousand,3000'));
console.log(test('1000 , 2000 , 3000'));
console.log(test('First Option,2Nd Option, THIRD Option'));

//must fail
console.log('===== FAIL ============');
console.log(test('Single Value'));
console.log(test('1000 ,, 2000 , 3000'));
console.log(test('1000 , 2000 , 3000,'));
console.log(test(',,1000 , 2000 , 3000'));
console.log(test('1000 , 2000 , 3000,,'));

最佳答案

您应该删除 /g,因为您正在使用 RegExp.test(),添加 anchor ^$(禁止部分匹配)并将 * 替换为 + 量词(至少需要一个逗号):

/^[-\w\s]+(,[-\w\s]+)+$/.test(STR);
^ ^^

参见 updated fiddle和一个 regex demo (出于演示目的,我将 \s 替换为常规空格)。

如果您想避免验证像 ---,---- 这样的序列,您可以进一步增强正则表达式,例如:

^\s*\w+(?:\s+\w+)*(?:\s*,\s*\w+(?:\s+\w+)*)+\s*$

参见 another regex demo和一个 fiddle .

此正则表达式匹配任何带有前导/尾随可选空格的字符串(由于 ^\s*\s*$),以一个单词开头,后跟零或多个空格 + 单词(带有 \w+(?:\s+\w+)*),这后面可以跟随 1 次或多次,带有可选的空格、逗号和一个单词,后跟空格 + 单词 ( 0 次或更多次)。

关于javascript正则表达式验证列表以逗号分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35863680/

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