Javascript 我想在参数编辑器中使用正则表达式验证标志和值

Javascript 我想在参数编辑器中使用正则表达式验证标志和值,javascript,regex,validation,user-input,Javascript,Regex,Validation,User Input,下面是我的应用程序的输入 -T -a 10/06/01 -c stats,sag,cor,tra -P 0 --jsonReturn false --splash All anonymized data --prefix -3.0 --l -3 在这里,(-)后面的单词是标志,后面的值是用户输入。 我希望正则表达式分别为我提供值和标志,以便我可以对它们运行验证。错误消息示例如下:“参数值无效”和“参数值输入无效” 下面是我编写的一个正则表达式,它将标志和值作为单独的组提供给我 /([^\s=

下面是我的应用程序的输入

-T  -a 10/06/01 -c stats,sag,cor,tra -P 0 --jsonReturn false --splash All anonymized data --prefix -3.0 --l -3
在这里,(-)后面的单词是标志,后面的值是用户输入。 我希望正则表达式分别为我提供值和标志,以便我可以对它们运行验证。错误消息示例如下:“参数值无效”和“参数值输入无效”

下面是我编写的一个正则表达式,它将标志和值作为单独的组提供给我

/([^\s=]+)(?:(?:=|\s+|[^--])([^ --][\w,]+))?/gm
这里有一个比上面的更好的正则表达式

/([^\s=]+)(?:(?:=|\s+|[^--])([^ --]+))?/gm
下面是一些用于测试正则表达式的输入值

-p 1 -n -1 -z zfile.csv --random false -d 


请尝试以下正则表达式:

/({1,2}[^\s]+)(\s+“?”|\s+[^\s-]+)/g
它允许您使用双引号转义破折号和空格,如:

-p1-n“-1”-z zfile.csv--随机假-d
//或
-T-a 10/06/01-c统计,sag,cor,tra-P 0--jsonReturn false--splash“所有匿名数据”--前缀“-3.0”-l“-3”
双引号是值的一部分,也是前导空格,但我认为您可以轻松地处理它们

编辑

这是一个完整的工作功能,可以随时使用:

函数getOpts(opts){ 设正则表达式=/({1,2}[^\s]+)(\s+“?”|\s+[^\s-]+)?/g; 让flags={}; 让我们比赛; while(match=regex.exec(txt)){ 让key=match[1]; 让值=匹配[2]; 如果(值)value=value.replace(/^\s+|“/g.”); 标志[键]=值; } 返回旗; }
除了标志之外,不会有任何其他带有
--
的内容?您的文件名可以有
--
吗?或者这些标志会出现任何固定的模式。这些标志将始终位于字符串的末尾,或者可以随机出现在任何位置。为此,有一个非常流行的包:@Avraham感谢您将我指向该包。我将是的。@CodeManiac没有任何其他的--flags。输入中的默认参数字符串将始终以--flag后跟一个值的格式出现。如果使用我的正则表达式,它会将标志和值作为不同的组提供给我。表达式不一致,因此我需要一些帮助。@CodeManiac为了更清楚,也可以使用单破折号(-)而不是双破折号(-))返回标志。我的正则表达式也捕获了这一点,但它不捕获负值。因此非常繁琐。我将尝试一下该包。如果您有任何想法,请告诉我。
--bucket null --prefix null --awskeyid null --awssecretkey null