Javascript Regex - 在一个单词的中间匹配大写/ upperacase字母(在一个句子中)?

时间:2017-06-25 09:34:49

标签: javascript regex uppercase

我需要匹配所有大写字母,只要它们位于单词的中间位置。例如,RegExr符合字母E。字母someThings T。 如果大写字母从单词的开头开始则不应该匹配。

这个正则表达式几乎匹配它,但它实际上匹配大写字母旁边的小写字母。

/[a-z][A-Z]/g

例如,对于单词RegExr,它与gE匹配,但我只需匹配E

更新

更新标题以指定此案例发生在一个句子中,而不是单个单词。

3 个答案:

答案 0 :(得分:3)

您可以在此处使用非字边界。单词字符(\w)是字母[a-zA-Z],数字[0-9]和下划线_

通过使用\B[A-Z]\B,您可以匹配单词内的每个大写字母。这也将匹配:

  • 9Gag
  • _H_ello

答案 1 :(得分:0)

这应该这样做:

/\B[A-Z]\B/g

使用\B进行单词边界

有关测试和说明,请参阅here

答案 2 :(得分:0)

使用RegExp.prototype.exec()函数的解决方案:

var str = 'RegExr someTextBetween JavaScript',
    matched = [],
    re = /[^A-Z\s]([A-Z])[^A-Z\s]/g;
    
while ((m = re.exec(str)) !== null) {
    matched.push(m[1]);
}
console.log(matched);