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

javascript Regex verfiy list separated by commas

本文关键字:分隔 列表 正则表达式 验证 javascript      更新时间:2023-09-26

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

  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(),添加锚点^$(以禁止部分匹配)并将*替换为+量词(至少需要一个逗号):

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

请参阅更新的小提琴和正则表达式演示(出于演示目的,我用常规空格替换了's)。

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

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

查看另一个正则表达式演示和小提琴。

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