javascript - 正则表达式:只有一个下划线实例

标签 javascript java regex regex-group

我正在寻找一个接受以下内容的正则表达式模式:

[foo_bar]{foo_bar}

地点:

  • [ ]{ } 充当包装器
  • foobar 可以是任何东西,除了重复 1 到 n 次的 _ 之外
  • _ 只能出现一次,并且应该位于 foobar

    之间

    匹配示例:

  • [1Ab_23c]
  • {abcDefGhjk_Z}
  • {1_abcDefGhjk}

    样本不匹配:

  • {1Ab_23c]
  • {_1Abde_fg4567_2_}
  • {1Abde_fg4567_2}
  • 1Ab_23c

    这就是我现在所拥有的,但我仍然缺少唯一 _ 部分。

    ^{.+_.+}|\[.+_.+]$
    

    我猜测 (?!_).+ 应该以某种方式存在,但我无法将它们拼凑在一起。

  • 最佳答案

    您可以使用 complemented character set - [^_](除下划线外的所有内容):

    const pattern = /\[[^_]+_[^_]+\]|\{[^_]+_[^_]+\}/;
    
    // matches
    console.log(pattern.test('[1Ab_23c]'));
    console.log(pattern.test('{1Abdefg4567_2}'));
    console.log(pattern.test('{1Ab_23c}'));
    
    // mismatches
    console.log(pattern.test('{1Ab_23c]'));
    console.log(pattern.test('{_1Abde_fg4567_2_}'));
    console.log(pattern.test('{1Abde_fg4567_2}'));
    console.log(pattern.test('1Ab_23c'));

    关于javascript - 正则表达式:只有一个下划线实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835472/

    相关文章:

    javascript - jquery的圆形插件+边框

    java - 用\n替换换行符

    java - 在java中用“在CSV文件中解析CSV文件

    php - 正则表达式 PHP,将所有链接与特定文本匹配

    javascript - AngularJS:即使它们显示正确,为什么我会得到 NaN?

    javascript - 我可以将 .load 函数与 document.referrer 函数结合起来吗?

    javascript - 带有图像 slider 的 Div 仅在 Safari 中不继承高度

    java - 当路径包含任何空格时,在 Java ist 中加载文件不起作用,例如%20

    包含通用类型对象的java jackson解析对象

    java - java中的分割词