0

这应该通过条件:

syntax_search = (){return 0;}
syntax_search = ( ) { fsf return 0;}
syntax_search = ( ) { return 0; }
syntax_search = (){ return; }
syntax_search = (){ if(x){ sdfsdf } return 0;}
syntax_search = (){ char x[20]; return };

它没有通过上述所有组合,正确的方法是什么?

if( /^\s*(\s*)\s*{[\s\S]*\s+return\s*[0-9]*\s*;\s*}\s*/.test(syntax_search) )
4

2 回答 2

2

您的正则表达式包含许多不必要的复杂性,并且有一些字符需要转义,例如{}

无论如何,你可以使用你的正则表达式的修改版本,它应该可以工作。

^\s*\(\s*\)\s*\{(.*(return\s*\d*\s*;)\s*)\}\s*;?$
//                                  ^
//                                  |
//                             There was a ? here

正则表达式 101 演示

于 2013-08-17T09:21:59.533 回答
0

一些问题:

  1. 正如 M42 指出的那样,您需要转义大括号
  2. 开头的括号也需要转义(否则您正在定义捕获组)
  3. 表达式需要“return”。您的前 2 个测试用例不包含 return 一词并且将失败。这是故意的吗?
  4. 与#3 相同;
  5. [\s\S]*任何是空间的东西和任何不是空间的东西。用点替换.*如果您还需要匹配换行符,请使用[^]*
  6. 此正则表达式未锚定到字符串的末尾,因此它将允许无效字符串。(你可以在最后一个 } 后面放任何你想要的东西

    /^\s*(\s*)\s*{[^]返回\s \d*\s*;\s*}\s*$/

于 2013-08-17T09:25:55.877 回答