繁体   English   中英

正则表达式:仅一个下划线实例

[英]RegEx: Only one instance of underscore

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

[foo_bar]{foo_bar}

哪里:

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

    匹配样本:

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

    样品不匹配:

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

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

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

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

  • 您可以使用补充字符集 - [^_] (除下划线以外的所有字符 ):

     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')); 

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM