javascript 正则表达式验证列表以逗号分隔
javascript Regex verfiy list separated by commas
我需要准备正则表达式,它必须验证以逗号分隔的列表要求是
- 检查列表是否用逗号分隔
- 不得有尾随逗号/逗号 ,
- ,不允许;逗号之间必须有单词
- 必须至少有一个逗号
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 次或更多次)。
相关文章:
- 如何将逗号分隔的列表转换为<ul>列表
- 检查变量并将它们添加到逗号分隔的列表中
- 用于在列表中进行多重搜索的正则表达式,用逗号分隔
- jQuery查找元素,然后组成逗号分隔的列表
- 正则表达式用于逗号分隔浮点数的列表
- javascript 正则表达式验证列表以逗号分隔
- 如何从 JSON 响应中获取逗号分隔的列表
- jQuery 手机间隙:- 列表视图中的自动分隔器是否正常工作
- 使用复选框过滤 angularjs 中的数据,并在逗号分隔的列表中显示在文本框内
- 将空格分隔的类列表转换为 Jquery 选择器的有效方法
- 将逗号分隔列表转换为无序列表
- 如何制作正则表达式以匹配逗号分隔的列表,列表中最多包含 5 个项目
- 帆.js如何修改路由以插入逗号分隔的 ID 列表
- Regex替换逗号分隔列表中的单词
- 从我的查询中为JavaScript创建逗号分隔列表
- 如何阻止emacs缩进javascript逗号分隔列表的第二行(例如array或json) ?
- PHP/JS:删除分隔列表中的最后一个逗号
- 如何";逃逸;POST请求中逗号分隔列表中的逗号
- 正则表达式逗号分隔列表包含九位电话号码
- 将 JavaScript 数组转换为逗号分隔列表的简单方法