我需要帮助形成一个允许Alpha,数字和只有特殊字符逗号的正则表达式 - 但逗号不应出现在开头或结尾或没有中间空白逗号。 现在我正在使用下面的正则表达式,它适用于aplha-numeric-逗号,但它将允许开头或结尾的逗号或空白逗号。
/ ^ [a-zA-Z0-9,] * $ / - >允许使用字母数字逗号的正则表达式
所以在正则表达式中需要帮助以满足上述中间没有预先成功/后续/空白逗号的要求......
正确的情况:abc,abc12,asdf,qwer23 错误的情况:,abc,abc12,asdf,qwer23 错误的情况:abc,abc12,asdf,qwer23, 错误的情况:abc,abc12,asdf,qwer23
在最后2小时内解决了这个问题,非常感谢任何帮助。
答案 0 :(得分:0)
我建议从char类中拆分逗号并使用*
量化组将整个表达式包装在一个强制子模式周围的可选非捕获组(需要至少1个字符)(作为你的正则表达式)还允许空字符串):
^(?:[a-zA-Z0-9]+(?:,[a-zA-Z0-9]+)*)?$
请参阅regex demo
<强>详情:
^
- 字符串的开头(?:[a-zA-Z0-9]+(?:,[a-zA-Z0-9]+)*)?
- 可选序列(=整个字符串可能为空):
[a-zA-Z0-9]+
- 1个或更多字母数字(?:,[a-zA-Z0-9]+)*
- 零或更多(由于*
)序列:
,
- 逗号[a-zA-Z0-9]+
- 1个或更多字母数字$
- 字符串结束。JS演示:
var test = [
"abc,abc12,asdf,qwer23", // correct
",abc,abc12,asdf,qwer23", // incorrect
"abc,abc12,asdf,qwer23,", // incorrect
"abc,abc12,,asdf,qwer23" ]; // incorrect
var rx = /^(?:[a-zA-Z0-9]+(?:,[a-zA-Z0-9]+)*)?$/;
for (var s of test) {
console.log(s + " => " + rx.test(s));
}