我正在寻找一个接受以下内容的正则表达式模式:
[foo_bar]
或 {foo_bar}
地点:
[
]
或 {
}
充当包装器foo
和 bar
可以是任何东西,除了重复 1 到 n 次的 _
之外
_
只能出现一次,并且应该位于 foo
和 bar
之间
匹配示例:
[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/