Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式匹配模式_Javascript_Php_Jquery - Fatal编程技术网

Javascript正则表达式匹配模式

Javascript正则表达式匹配模式,javascript,php,jquery,Javascript,Php,Jquery,我必须编写一个与以下字符串匹配的正则表达式 Q$:ADD A GOOD QUESTION A$:ANSWER C$:choice0, choice1, choice2, choice2 Q$:ADD A GOOD QUESTION A$:ANSWER C$:choice0, choice1, choice2, choice3 这里, 一个匹配的正则表达式应该有Q$:和A$:和C$:是可选的。它可以是任何顺序。它可以有任何字符。它可以是任意顺序Q$:,C$:,A$:或Q$:A$:C$: 但是它

我必须编写一个与以下字符串匹配的正则表达式

Q$:ADD A GOOD QUESTION
A$:ANSWER
C$:choice0, choice1, choice2, choice2

Q$:ADD A GOOD QUESTION
A$:ANSWER
C$:choice0, choice1, choice2, choice3
这里,

一个匹配的正则表达式应该有
Q$:
A$:
C$:
是可选的。它可以是任何顺序。它可以有任何字符。它可以是任意顺序
Q$:,C$:,A$:或Q$:A$:C$:

但是它不应该是
Q$:Q$:C$:A$:A$:C$:

我发现我们不能在中使用递归模式

我已经试过了,但是我不能用正则表达式。我能够处理
字符串操作
,但它很长

有什么想法吗

编辑

我试图编写regex,比如
Q$:任意数量的单词和A$:任意数量的单词C$:这是可选的,但是如果它存在,它应该有3个逗号和4个单词。重复这个模式

编辑

有效字符串

Q$:question
A$:answer
C$:c,c1,c2,c3

Q$: question goes here
A$: Answer goes here
C$: choices, goes , here, ch
但是
Q$:
之间不应该有任何空格

我假设是命令

  Q$: question goes here
  A$: Answer goes here
  C$: choices, goes , here, ch

  Q$: question goes here
  C$: choices, goes , here, ch
  A$: Answer goes here
也应该是有效的。问题必须放在第一位,选择/回答才行

这也是一个有效的字符串。其他有效字符串包括

 Q$: question goes hereA$: Answer goes here

 Q$: question goes here      A$: Answer goes here
甚至选择也可以排在第一位。而且空间有限

现在我不希望只使用正则表达式。还有其他有效的方法吗?我的意思是可重复使用和易于更换。我删除了
regex
标记,还添加了
php
标记

根据@Wiktor的回答,我得出了以下正则表达式。但没有达到我预期的水平

     (?:Q\$:.*[\S]*[\r\n]*A\$:.*[\r\n]*C\$:.*,.*,.*,.*)|(?:Q\$:.*[\S]*[\r\n]*A\$:.*[\r\n]*)

是否要求只匹配国会大厦字母后接
$
字符?@guest271314 No.仅此敏感区域中的
Q$:C$:A$:
。其他的可以是小/大写字母是“Q\$:”实际输入字符串的一部分?看起来你可以使用,或者类似的东西。也许是这样。你没有@WiktorStribiżew评论中的捕获群。但我改进了这一行,以显示捕获组:您可以在匹配部分中看到不同的模式。您可以提取与javascript匹配的内容并分割选择,这样您将得到所需的结果
     (?:Q\$:.*[\S]*[\r\n]*A\$:.*[\r\n]*C\$:.*,.*,.*,.*)|(?:Q\$:.*[\S]*[\r\n]*A\$:.*[\r\n]*)