Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Regex - Fatal编程技术网

Javascript 如何修改我下面的正则表达式?

Javascript 如何修改我下面的正则表达式?,javascript,regex,Javascript,Regex,我有一个正则表达式/\{([^\{\}]+)\}/,它在最里面的{}中查找文本 它匹配最里面的{}中的任何文本 但是现在,我有一个新的要求,当它是一个循环时,它应该只匹配{}之间的文本 也就是说,它前面应该加上for(.*)或while(.*)和do 如何修改我的正则表达式,使其仅在前面有上述内容时匹配 注意:我原来的正则表达式的用途不应该被破坏 Javascript解决方案也很受欢迎。您可以这样做 var match = code.match(/(?:(for|while|do)\s*\([^

我有一个正则表达式
/\{([^\{\}]+)\}/
,它在最里面的
{}
中查找文本

它匹配最里面的
{}
中的任何文本

但是现在,我有一个新的要求,当它是一个循环时,它应该只匹配
{}
之间的文本

也就是说,它前面应该加上
for(.*)
while(.*)
do

如何修改我的正则表达式,使其仅在前面有上述内容时匹配

注意:我原来的正则表达式的用途不应该被破坏

Javascript解决方案也很受欢迎。

您可以这样做

var match = code.match(/(?:(for|while|do)\s*\([^\{\}]*\))\s*\{([^\{\}]+)\}/);
如果
match
不为空,则它将包含

  • 在索引1处,的
  • 在索引2中,您的内部循环内容

mate关于
do
?如果你想添加
do
,请使用
/(?:(for | while | do)\s*([^\{}]*\)\s*{([^\{}]+)\/
编辑你的答案,否则有人可能会因为与答案不匹配而投反对票。将在5分钟内接受您的回答:)