[英]regex to allow one comma and not at the start or end of string in JavaScript
我不太擅长正则表达式,我需要遵循以下规则的 3 个不同的正则表达式:
对于第一条规则: 21, day
可以,但21, day, 32
不行。
对于第二条规则: ,21
不行。
对于第三条规则: 21,
不行。
到目前为止,我已经在下面创建了一个正则表达式来适应上述规则,但我想知道它是否可以分成三个不同的正则表达式来适应上述三个规则。
^[a-z0-9A-Z&.\/'_ ]+(,[a-zA-Z0-9&.\/'_ ]+)?$
任何帮助将非常感激。 谢谢
?
): ^[^,]*,[^,]*$
^[^,]+,[^,]*$
^[^,]*,[^,]+$
[^,]
表示“不是逗号的字符”。
这个正则表达式应该可以完成这项工作。
^[^,]+,[^,]+$
解释:
[^,]+
-> 至少一次不是逗号
,
-> 逗号(显然)
[^,]+
-> 至少一次不是逗号(再次)
^(?!.*,.*,)
- 这是拒绝重复逗号的基本正则表达式。^(?!,)(?!.*,.*,)
- 相同的基数,但添加了“开头没有逗号”条件^(?!.*,.*,).*(?:[^,]|^)$
- 相同的基数,“末尾没有逗号”。 后者被实现为交替组匹配,因为在 JavaScript 中不提供lookbehinds。 注意:所有这些模式都允许在输入中使用零个或一个逗号。 如果您只需要一个逗号,请在每个逗号前加上^(?=.*,)
。
简单的字符串操作可以处理这个:
function testForComma(str) { //Comma isn't first character //Comma only exists once //Comma isn't last character return str.indexOf(',') >= 1 && str.lastIndexOf(',') == str.indexOf(',') && str.lastIndexOf(',') != str.length - 1; } console.log(testForComma(',')); console.log(testForComma(', ')); console.log(testForComma(' ,')); console.log(testForComma(' , ')); console.log(testForComma(' ,, '));
简单的表达就像 - ^[^,]+,[^,]+$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.