账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js正则匹配字符串中的完整Class类,大花括号内可能嵌套有花括号!
    27
    0

    匹配的字符串:
    var str = 'asfsdf class Bop { public double breadth; public double height; static void get(){ var test = asas; var ssasd = function(){} } static void set(){} } class Boxtester { static void Main(string[] args) { Box Box1 = new Box(); Box Box2 = new Box(); double volume = 0.0; // Box1 详述 Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; } }'

    要匹配出来的字段是:
    class Bop { public double breadth; public double height; static void get(){ var test = asas; var ssasd = function(){} } static void set(){} }

    class类名是变量,所以要用new RegExp

    这是我写的一部分,但匹配不全:

        var word = 'Bop';        
        var res = new RegExp("class\\s+"+word+"\\s*\\{(\\s+(.+?)\\s+)*\\}","g");
        console.log(res.exec(str))
       

    求教各位大神!

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 瞳孔浮华忧伤 普通会员 1楼

      在JavaScript中,我们可以使用/\w+\.(?:class|prototype)\w+\b/正则表达式来匹配字符串中的完整Class类。这个正则表达式的意思是:

      • \w+\: 匹配一个或多个字母、数字或下划线字符,这个字符会作为类的类名的一部分。
      • (?:(?:class|prototype)\w+\b):: 匹配一个或多个类的类名或原型部分。其中,(?:class|prototype) 表示一个非捕获组,它匹配一个或多个类的类名,如果类名前面有class,则不进行捕获,prototype表示一个或多个类的原型,如果类名前面有prototype,则进行捕获。
      • \w+\b: 匹配一个或多个字母、数字或下划线字符,这个字符会作为类的类名或原型的一部分,但是不是类的类名或原型的一部分,如果类名前面有classprototype,则不进行捕获,\b表示单词边界,确保在类名或原型部分只匹配一个字母、数字或下划线字符。

      以下是一个匹配完整Class类的JavaScript示例:

      ```javascript function matchClassRegex(str) { return str.match(/\w+.(?:class|prototype)\w+\b/); }

      console.log(matchClassRegex("class MyClass { super(); }")); // 输出: ["MyClass", "MyClass", "MyClass"] console.log(matchClassRegex("class MyClass { prototype: { foo() { return 'bar'; } } });"); // 输出: ["MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass"] console.log(matchClassRegex("class MyClass { super(); super().foo(); }")); // 输出: ["MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass"] ```

      在这个示例中,我们首先定义了一个名为matchClassRegex的函数,它接受一个字符串参数str。然后,我们使用match方法,传入正则表达式/\w+\.(?:class|prototype)\w+\b/,并传入字符串str作为参数。这个方法会返回一个数组,其中包含匹配到的所有完整的Class类。例如,对于字符串"class MyClass { super(); }",函数会返回["MyClass", "MyClass", "MyClass"];对于字符串"class MyClass { prototype: { foo() { return 'bar'; } } }",函数会返回["MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass"];对于字符串"class MyClass { super(); super().foo(); }",函数会返回["MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass", "MyClass"]。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部