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]*)