我需要两个正则表达式。 1)任何字符后跟逗号后跟任何字符后跟逗号后跟任何字符。
目前我有:
/(.*,.*,.*)/
2)任何字符后跟逗号后跟任何字符,只要它们不是逗号。
目前我有:
/(.*,.*[^,]+.*)/
非常感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
对于你的第一个正则表达式,你真的可以使用内置string.split(",");
的Javascript,它会返回一个字符串数组。从那里开始检查array.length >= 3
,你就会知道字符串与你的模式匹配。这就是说,在第二个必需的逗号之后,角色中有逗号,根据你的期望,你可能会遇到问题。
第二个正则表达式也可以使用string.split(",")
进行验证。您的第二次检查只是array.length === 2
完整的代码将是这样的
function verify(str) {
var arr = str.split(",");
if (arr.length < 2)
return "Invalid string provided";
if (arr.length === 2)
return arr[0] + arr[1];
return join(arr);
}
verify("some,crazy,comma delimited voodoo");
答案 1 :(得分:0)
对于您的第一个正则表达式/(.*,.*,.*)/
,您拥有所需的内容。请注意,“任何字符”都包含逗号,所以这只能保证至少 2个逗号。
对于第二个/(.*,.*[^,]+.*)/
,这不太对。 “任何字符后跟逗号后跟任何字符,只要它们不是逗号”将是/(.*,[^,]*)/
。然而,再次考虑“任何字符”包括逗号,所以它有点无意义。
也许你的意思更像/([^,]*,[^,]*)/
?这是任何带有一个逗号的文本。您可以根据需要添加第二个,[^,]*
来重复该模式,例如/([^,]*,[^,]*,[^,]*)/
恰好是两个逗号。
如果您希望匹配以逗号分隔的任意数量的项目,请尝试/([^,]+,?)/g
以匹配每个单独的列表项。
如果您还要求逗号之间有文字,请使用+代替*。
答案 2 :(得分:-4)
我不知道你的正则表达式的实用程序,但是在linux grep命令中这将起作用:
grep'?,?,?'
grep'?,* [^,]'