我需要正则表达式

时间:2017-05-26 14:23:59

标签: javascript regex

我需要两个正则表达式。 1)任何字符后跟逗号后跟任何字符后跟逗号后跟任何字符。

目前我有:

/(.*,.*,.*)/

2)任何字符后跟逗号后跟任何字符,只要它们不是逗号。

目前我有:

/(.*,.*[^,]+.*)/

非常感谢任何帮助。提前谢谢!

3 个答案:

答案 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'?,* [^,]'